diff --git a/src/THcCherenkov.cxx b/src/THcCherenkov.cxx index 33960c9a7a4b3f6d2650c44481843586581945fd..ceb1aefb914a07c4cac2882c3711037016a901ce 100644 --- a/src/THcCherenkov.cxx +++ b/src/THcCherenkov.cxx @@ -60,9 +60,8 @@ THcCherenkov::THcCherenkov( const char* name, const char* description, frAdcPulseInt = new TClonesArray("THcSignalHit", 16); frAdcPulseAmp = new TClonesArray("THcSignalHit", 16); - cout << "fADCHits " << fADCHits << endl; InitArrays(); - cout << "fADCHits " << fADCHits << endl; + } @@ -183,6 +182,7 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date ) fCerNRegions = 3; fNPMT = new Int_t[fNelem]; + fADC_hit = new Int_t[fNelem]; fADC = new Double_t[fNelem]; fADC_P = new Double_t[fNelem]; fNPE = new Double_t[fNelem]; @@ -192,15 +192,7 @@ Int_t THcCherenkov::ReadDatabase( const TDatime& date ) fPedLimit = new Int_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]; fCerFiredCounter = new Int_t [fCerNRegions]; @@ -265,6 +257,7 @@ Int_t THcCherenkov::DefineVariables( EMode mode ) RVarDef vars[] = { {"phototubes", "Nuber of Cherenkov photo tubes", "fNPMT"}, {"adc", "Raw ADC values", "fADC"}, + {"adc_hit", "ADC hit flag =1 means hit", "fADC_hit"}, {"adc_p", "Pedestal Subtracted ADC values", "fADC_P"}, {"npe", "Number of Photo electrons", "fNPE"}, {"npesum", "Sum of Number of Photo electrons", "fNPEsum"}, @@ -297,7 +290,7 @@ void THcCherenkov::Clear(Option_t* opt) // 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; fNCherHit = 0; @@ -306,7 +299,8 @@ void THcCherenkov::Clear(Option_t* opt) fADC[itube] = 0; fADC_P[itube] = 0; fNPE[itube] = 0; - } + fADC_hit[itube] = 0; + } frAdcPedRaw->Clear(); frAdcPulseIntRaw->Clear(); @@ -359,7 +353,8 @@ Int_t THcCherenkov::Decode( const THaEvData& evdata ) ((THcSignalHit*) frAdcPulseAmp->ConstructedAt(nrAdcHits))->Set(padnum, rawAdcHit.GetPulseAmp(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; } @@ -388,35 +383,16 @@ Int_t THcCherenkov::CoarseProcess( TClonesArray& ) //tracks // 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) - // 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; fADC[npmt] = hit->GetRawAdcHitPos().GetPulseIntRaw(); - fADC_P[npmt] = hit->GetRawAdcHitPos().GetPulseIntRaw() - fPedMean[npmt]; - - 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; - } + fADC_P[npmt] = hit->GetRawAdcHitPos().GetPulseInt(); + fNPE[npmt] = fGain[npmt]*fADC_P[npmt]; + fNCherHit ++; fNPEsum += fNPE[npmt]; - } - ApplyCorrections(); return 0; } diff --git a/src/THcCherenkov.h b/src/THcCherenkov.h index 8b48f8878fdd13a0ed8c9d397643698f3ab2864c..2a02df87f187a0c64d3bad22d527556121c301ed 100644 --- a/src/THcCherenkov.h +++ b/src/THcCherenkov.h @@ -51,6 +51,7 @@ class THcCherenkov : public THaNonTrackingDetector, public THcHitList { // Event information Int_t fNhits; + Int_t* fADC_hit; // [fNelem] Array of flag if ADC hit 1 means Int_t* fNPMT; // [fNelem] Array of ADC amplitudes Double_t* fADC; // [fNelem] Array of ADC amplitudes Double_t* fADC_P; // [fNelem] Array of ADC amplitudes