Skip to content
Snippets Groups Projects
Commit 1784b83b authored by Mark K Jones's avatar Mark K Jones Committed by GitHub
Browse files

Merge pull request #166 from MarkKJones/cer

Modified THcCherenkov.cxx and THcCherenkov.h
parents 43a133a2 30c8c0ea
No related tags found
No related merge requests found
...@@ -60,9 +60,8 @@ THcCherenkov::THcCherenkov( const char* name, const char* description, ...@@ -60,9 +60,8 @@ THcCherenkov::THcCherenkov( const char* name, const char* description,
frAdcPulseInt = new TClonesArray("THcSignalHit", 16); frAdcPulseInt = new TClonesArray("THcSignalHit", 16);
frAdcPulseAmp = new TClonesArray("THcSignalHit", 16); frAdcPulseAmp = new TClonesArray("THcSignalHit", 16);
cout << "fADCHits " << fADCHits << endl;
InitArrays(); InitArrays();
cout << "fADCHits " << fADCHits << endl;
} }
...@@ -183,6 +182,7 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date ) ...@@ -183,6 +182,7 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date )
fCerNRegions = 3; fCerNRegions = 3;
fNPMT = new Int_t[fNelem]; fNPMT = new Int_t[fNelem];
fADC_hit = new Int_t[fNelem];
fADC = new Double_t[fNelem]; fADC = new Double_t[fNelem];
fADC_P = new Double_t[fNelem]; fADC_P = new Double_t[fNelem];
fNPE = new Double_t[fNelem]; fNPE = new Double_t[fNelem];
...@@ -192,15 +192,7 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date ) ...@@ -192,15 +192,7 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date )
fPedLimit = new Int_t[fNelem]; fPedLimit = new Int_t[fNelem];
fPedMean = new Double_t[fNelem]; fPedMean = new Double_t[fNelem];
fNPMT = new Int_t[fNelem];
fADC = new Double_t[fNelem];
fADC_P = new Double_t[fNelem];
fNPE = new Double_t[fNelem];
fCerWidth = new Double_t[fNelem];
fGain = new Double_t[fNelem];
fPedLimit = new Int_t[fNelem];
fPedMean = new Double_t[fNelem];
fCerTrackCounter = new Int_t [fCerNRegions]; fCerTrackCounter = new Int_t [fCerNRegions];
fCerFiredCounter = new Int_t [fCerNRegions]; fCerFiredCounter = new Int_t [fCerNRegions];
...@@ -265,6 +257,7 @@ Int_t THcCherenkov::DefineVariables( EMode mode ) ...@@ -265,6 +257,7 @@ Int_t THcCherenkov::DefineVariables( EMode mode )
RVarDef vars[] = { RVarDef vars[] = {
{"phototubes", "Nuber of Cherenkov photo tubes", "fNPMT"}, {"phototubes", "Nuber of Cherenkov photo tubes", "fNPMT"},
{"adc", "Raw ADC values", "fADC"}, {"adc", "Raw ADC values", "fADC"},
{"adc_hit", "ADC hit flag =1 means hit", "fADC_hit"},
{"adc_p", "Pedestal Subtracted ADC values", "fADC_P"}, {"adc_p", "Pedestal Subtracted ADC values", "fADC_P"},
{"npe", "Number of Photo electrons", "fNPE"}, {"npe", "Number of Photo electrons", "fNPE"},
{"npesum", "Sum of Number of Photo electrons", "fNPEsum"}, {"npesum", "Sum of Number of Photo electrons", "fNPEsum"},
...@@ -297,7 +290,7 @@ void THcCherenkov::Clear(Option_t* opt) ...@@ -297,7 +290,7 @@ void THcCherenkov::Clear(Option_t* opt)
// Clear Cherenkov variables from h_trans_cer.f // Clear Cherenkov variables from h_trans_cer.f
fNhits = 0; // Don't really need to do this. (Be sure this called before Decode) fNhits = 0;
fNPEsum = 0.0; fNPEsum = 0.0;
fNCherHit = 0; fNCherHit = 0;
...@@ -306,7 +299,8 @@ void THcCherenkov::Clear(Option_t* opt) ...@@ -306,7 +299,8 @@ void THcCherenkov::Clear(Option_t* opt)
fADC[itube] = 0; fADC[itube] = 0;
fADC_P[itube] = 0; fADC_P[itube] = 0;
fNPE[itube] = 0; fNPE[itube] = 0;
} fADC_hit[itube] = 0;
}
frAdcPedRaw->Clear(); frAdcPedRaw->Clear();
frAdcPulseIntRaw->Clear(); frAdcPulseIntRaw->Clear();
...@@ -359,7 +353,8 @@ Int_t THcCherenkov::Decode( const THaEvData& evdata ) ...@@ -359,7 +353,8 @@ Int_t THcCherenkov::Decode( const THaEvData& evdata )
((THcSignalHit*) frAdcPulseAmp->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseAmp(thit)); ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseAmp(thit));
((THcSignalHit*) frAdcPulseTimeRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTimeRaw(thit)); ((THcSignalHit*) frAdcPulseTimeRaw->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseTimeRaw(thit));
fADC_hit[padnum-1]=1; //
// cout << dec << "thit = " << thit << " " << padnum << " " << rawAdcHit.GetPulseInt(thit)<< " " << rawAdcHit.GetPulseIntRaw(thit) << " " << rawAdcHit.GetPedRaw() << " " << rawAdcHit.GetPedRaw()*28./4.<< endl;
++nrAdcHits; ++nrAdcHits;
} }
...@@ -388,35 +383,16 @@ Int_t THcCherenkov::CoarseProcess( TClonesArray& ) //tracks ...@@ -388,35 +383,16 @@ Int_t THcCherenkov::CoarseProcess( TClonesArray& ) //tracks
// Pedestal subtraction and gain adjustment // Pedestal subtraction and gain adjustment
// An ADC value of less than zero occurs when that particular
// channel has been sparsified away and has not been read.
// The NPE for that tube will be assigned zero by this code.
// An ADC value of greater than 8192 occurs when the ADC overflows on
// an input that is too large. Tubes with this characteristic will
// be assigned NPE = 100.0.
Int_t npmt = hit->fCounter - 1; // tube = hcer_tube_num(nhit) Int_t npmt = hit->fCounter - 1; // tube = hcer_tube_num(nhit)
// Should probably check that npmt is in range
// if ( ihit != npmt )
// cout << "ihit != npmt, ihit = " << ihit << ", npmt = " << npmt << ", fNhits = " << fNhits << endl;
fNPMT[npmt] = hit->fCounter; fNPMT[npmt] = hit->fCounter;
fADC[npmt] = hit->GetRawAdcHitPos().GetPulseIntRaw(); fADC[npmt] = hit->GetRawAdcHitPos().GetPulseIntRaw();
fADC_P[npmt] = hit->GetRawAdcHitPos().GetPulseIntRaw() - fPedMean[npmt]; fADC_P[npmt] = hit->GetRawAdcHitPos().GetPulseInt();
if ( ( fADC_P[npmt] > fCerWidth[npmt] ) && ( hit->GetRawAdcHitPos().GetPulseIntRaw() < 8000 ) ) {
fNPE[npmt] = fGain[npmt]*fADC_P[npmt];
fNCherHit ++;
} else if ( hit->GetRawAdcHitPos().GetPulseIntRaw() > 8000 ) {
fNPE[npmt] = 100.0;
} else {
fNPE[npmt] = 0.0;
}
fNPE[npmt] = fGain[npmt]*fADC_P[npmt];
fNCherHit ++;
fNPEsum += fNPE[npmt]; fNPEsum += fNPE[npmt];
} }
ApplyCorrections();
return 0; return 0;
} }
......
...@@ -51,6 +51,7 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList { ...@@ -51,6 +51,7 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList {
// Event information // Event information
Int_t fNhits; Int_t fNhits;
Int_t* fADC_hit; // [fNelem] Array of flag if ADC hit 1 means
Int_t* fNPMT; // [fNelem] Array of ADC amplitudes Int_t* fNPMT; // [fNelem] Array of ADC amplitudes
Double_t* fADC; // [fNelem] Array of ADC amplitudes Double_t* fADC; // [fNelem] Array of ADC amplitudes
Double_t* fADC_P; // [fNelem] Array of ADC amplitudes Double_t* fADC_P; // [fNelem] Array of ADC amplitudes
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment