Skip to content
Snippets Groups Projects
Commit c7a16710 authored by Cdaq Account's avatar Cdaq Account
Browse files

Add variables related to good scintillator hits to tree

Modify default tdc_neg and tdc_pos = -999
SetCorrectedTimes when only oneside has TDC within in window
parent 238bc9dd
No related branches found
No related tags found
No related merge requests found
......@@ -282,8 +282,8 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
fMaxHodoScin=fMaxScinPerPlane*fNPlanes;
if (fDebug>=1) cout <<"fMaxScinPerPlane = "<<fMaxScinPerPlane<<" fMaxHodoScin = "<<fMaxHodoScin<<endl;
fHodoVelLight=new Double_t [fMaxHodoScin];
fHodoPosSigma=new Double_t [fMaxHodoScin];
fHodoVelLight=new Double_t [fMaxHodoScin];
fHodoPosSigma=new Double_t [fMaxHodoScin];
fHodoNegSigma=new Double_t [fMaxHodoScin];
fHodoPosMinPh=new Double_t [fMaxHodoScin];
fHodoNegMinPh=new Double_t [fMaxHodoScin];
......@@ -306,6 +306,10 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
fyLoScin = new Int_t [fNHodoscopes];
fyHiScin = new Int_t [fNHodoscopes];
fHodoSlop = new Double_t [fNPlanes];
fTdcOffset = new Int_t [fNPlanes];
for(Int_t ip=0;ip<fNPlanes;ip++) { // Set a large default window
fTdcOffset[ip] = 0 ;
}
DBRequest list[]={
{"start_time_center", &fStartTimeCenter, kDouble},
......@@ -315,15 +319,8 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
{"scin_tdc_max", &fScinTdcMax, kDouble},
{"tof_tolerance", &fTofTolerance, kDouble, 0, 1},
{"pathlength_central", &fPathLengthCentral, kDouble},
{"hodo_vel_light", &fHodoVelLight[0], kDouble, fMaxHodoScin},
{"hodo_pos_sigma", &fHodoPosSigma[0], kDouble, fMaxHodoScin},
{"hodo_neg_sigma", &fHodoNegSigma[0], kDouble, fMaxHodoScin},
{"hodo_pos_minph", &fHodoPosMinPh[0], kDouble, fMaxHodoScin},
{"hodo_neg_minph", &fHodoNegMinPh[0], kDouble, fMaxHodoScin},
{"hodo_pos_phc_coeff", &fHodoPosPhcCoeff[0], kDouble, fMaxHodoScin},
{"hodo_neg_phc_coeff", &fHodoNegPhcCoeff[0], kDouble, fMaxHodoScin},
{"hodo_pos_time_offset", &fHodoPosTimeOffset[0], kDouble, fMaxHodoScin},
{"hodo_neg_time_offset", &fHodoNegTimeOffset[0], kDouble, fMaxHodoScin},
{"hodo_pos_ped_limit", &fHodoPosPedLimit[0], kInt, fMaxHodoScin},
{"hodo_neg_ped_limit", &fHodoNegPedLimit[0], kInt, fMaxHodoScin},
{"tofusinginvadc", &fTofUsingInvAdc, kInt, 0, 1},
......@@ -353,10 +350,6 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
fNormETot = 0.7;
// Gets added to each reference time corrected raw TDC value
// to make sure valid range is all positive.
fTdcOffset = new Int_t [fNPlanes];
for(Int_t ip=0;ip<fNPlanes;ip++) { // Set a large default window
fTdcOffset[ip] = 0;
}
gHcParms->LoadParmValues((DBRequest*)&list,prefix);
......@@ -390,6 +383,7 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
if (fTofUsingInvAdc) {
DBRequest list2[]={
{"hodo_vel_light", &fHodoVelLight[0], kDouble, fMaxHodoScin},
{"hodo_pos_invadc_offset",&fHodoPosInvAdcOffset[0],kDouble,fMaxHodoScin},
{"hodo_neg_invadc_offset",&fHodoNegInvAdcOffset[0],kDouble,fMaxHodoScin},
{"hodo_pos_invadc_linear",&fHodoPosInvAdcLinear[0],kDouble,fMaxHodoScin},
......@@ -400,6 +394,19 @@ Int_t THcHodoscope::ReadDatabase( const TDatime& date )
};
gHcParms->LoadParmValues((DBRequest*)&list2,prefix);
};
if (!fTofUsingInvAdc) {
DBRequest list3[]={
{"hodo_vel_light", &fHodoVelLight[0], kDouble, fMaxHodoScin},
{"hodo_pos_minph", &fHodoPosMinPh[0], kDouble, fMaxHodoScin},
{"hodo_neg_minph", &fHodoNegMinPh[0], kDouble, fMaxHodoScin},
{"hodo_pos_phc_coeff", &fHodoPosPhcCoeff[0], kDouble, fMaxHodoScin},
{"hodo_neg_phc_coeff", &fHodoNegPhcCoeff[0], kDouble, fMaxHodoScin},
{"hodo_pos_time_offset", &fHodoPosTimeOffset[0], kDouble, fMaxHodoScin},
{"hodo_neg_time_offset", &fHodoNegTimeOffset[0], kDouble, fMaxHodoScin},
{0}
};
gHcParms->LoadParmValues((DBRequest*)&list3,prefix);
};
if (fDebug >=1) {
cout <<"******* Testing Hodoscope Parameter Reading ***\n";
cout<<"StarTimeCenter = "<<fStartTimeCenter<<endl;
......@@ -452,9 +459,9 @@ Int_t THcHodoscope::DefineVariables( EMode mode )
{"betap", "betaP", "fBetaP"},
{"betanotrack", "Beta from scintillator hits", "fBetaNoTrk"},
{"betachisqnotrack", "Chi square of beta from scintillator hits", "fBetaNoTrkChiSq"},
{"fpHitsTime", "Time at focal plane from all hits", "fFPTime"},
{"fpHitsTime", "Time at focal plane from all hits", "fFPTimeAll"},
{"starttime", "Hodoscope Start Time", "fStartTime"},
{"goodstarttime", "Hodoscope Good Start Time", "fGoodStartTime"},
{"goodstarttime", "Hodoscope Good Start Time (logical flag)", "fGoodStartTime"},
{"goodscinhit", "Hit in fid area", "fGoodScinHits"},
// {"goodscinhitx", "Hit in fid x range", "fGoodScinHitsX"},
{"scinshould", "Total scin Hits in fid area", "fScinShould"},
......@@ -537,6 +544,7 @@ void THcHodoscope::ClearEvent()
fBetaNoTrk = 0.0;
fBetaNoTrkChiSq = 0.0;
fStartTime = 0.0;
fFPTimeAll= -1000.;
fGoodStartTime = kFALSE;
fGoodScinHits = 0;
fScinShould = 0;
......@@ -646,7 +654,6 @@ void THcHodoscope::EstimateFocalPlaneTime( void )
*/
Int_t timehist[200];
for (Int_t i=0;i<200;i++) {
timehist[i] = 0;
}
......@@ -738,7 +745,6 @@ void THcHodoscope::EstimateFocalPlaneTime( void )
fStartTime = fStartTimeCenter;
fGoodStartTime=kFALSE;
}
if((goodplanetime[0]||goodplanetime[1])
&&(goodplanetime[2]||goodplanetime[3])) {
......@@ -1304,7 +1310,7 @@ Int_t THcHodoscope::FineProcess( TClonesArray& tracks )
}
}
Double_t fptime = FPTimeSum/nFPTimeSum;
fFPTimeAll = fptime;
Double_t dedx=0.0;
for(UInt_t ih=0;ih<fTOFCalc.size();ih++) {
if(fTOFCalc[ih].good_scin_time) {
......
......@@ -128,6 +128,7 @@ protected:
// Per-event data
Bool_t fGoodStartTime;
Double_t fStartTime;
Double_t fFPTimeAll;
Int_t fNfptimes;
Double_t fBetaP;
......
......@@ -348,7 +348,17 @@ Int_t THcScintillatorPlane::DefineVariables( EMode mode )
{"negAdcPulseAmp", "List of negative ADC pulse amplitudes.", "frNegAdcPulseAmp.THcSignalHit.GetData()"},
{"fptime", "Time at focal plane", "GetFpTime()"},
{"nhits", "Number of paddle hits (passed TDC Min and Max cuts for either end)", "GetNScinHits() "},
{"GoodPaddle", "List of Paddle Numbers (passed TDC Min and Max cuts for either end)", "fHodoHits.THcHodoHit.GetPaddleNumber()"},
{"GoodNegTdcChan", "List of negative TDC values (passed TDC Min and Max cuts for either end)", "fHodoHits.THcHodoHit.GetNegTDC()"},
{"GoodNegTdcTimeCorr", "List of negative corrected TDC values (corrected for PMT offset and ADC)", "fHodoHits.THcHodoHit.GetNegCorrectedTime()"},
{"GoodNegTdcTimeTOFCorr", "List of negative corrected TDC values (corrected for TOF)", "fHodoHits.THcHodoHit.GetNegTOFCorrectedTime()"},
{"GoodNegAdcPulseInt", "List of negative ADC values (passed TDC Min and Max cuts for either end)", "fHodoHits.THcHodoHit.GetNegADC()"},
{"GoodPosTdcChan", "List of positive TDC values (passed TDC Min and Max cuts for either end)", "fHodoHits.THcHodoHit.GetPosTDC()"},
{"GoodPosTdcTimeCorr", "List of positive corrected TDC values (corrected for PMT offset and ADC)", "fHodoHits.THcHodoHit.GetPosCorrectedTime()"},
{"GoodPosTdcTimeTOFCorr", "List of positive corrected TDC values (corrected for TOF)", "fHodoHits.THcHodoHit.GetPosTOFCorrectedTime()"},
{"GoodPosAdcPulseInt", "List of positive ADC values (passed TDC Min and Max cuts for either end)", "fHodoHits.THcHodoHit.GetPosADC()"},
{"ngoodhits", "Number of paddle hits (passed tof tolerance and used to determine the focal plane time )", "GetNGoodHits() "},
{ 0 }
};
......@@ -595,8 +605,8 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
Bool_t btdcraw_pos=kFALSE;
Bool_t btdcraw_neg=kFALSE;
Int_t tdc_pos=-99;
Int_t tdc_neg=-99;
Int_t tdc_pos=-999;
Int_t tdc_neg=-999;
// Find first in range hit from multihit tdc
for(UInt_t thit=0; thit<hit->GetRawTdcHitPos().GetNHits(); thit++) {
tdc_pos = hit->GetRawTdcHitPos().GetTime(thit)+fTdcOffset;
......@@ -613,6 +623,7 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
}
}
// Proceed if there is a valid TDC on either end of the bar
// cout << ihit << " " << hit->fCounter << " " << fNScinHits<< " " << tdc_neg << " " << btdcraw_neg << " " << tdc_pos << " " << btdcraw_pos << " " <<endl;
if(btdcraw_pos || btdcraw_neg) {
......@@ -665,9 +676,39 @@ Int_t THcScintillatorPlane::ProcessHits(TClonesArray* rawhits, Int_t nexthit)
postime = postime-(fZpos+(index%2)*fDzpos)/(29.979*fBetaNominal);
negtime = negtime-(fZpos+(index%2)*fDzpos)/(29.979*fBetaNominal);
}
// cout << fNScinHits<< " " << timec_pos << " " << timec_neg << endl;
((THcHodoHit*) fHodoHits->At(fNScinHits))->SetCorrectedTimes(timec_pos,timec_neg,
postime, negtime,
scin_corrected_time);
} else {
Double_t timec_pos,timec_neg;
timec_pos=tdc_pos;
timec_neg=tdc_neg;
if(btdcraw_pos) {
if(fTofUsingInvAdc) {
timec_pos = tdc_pos*fScinTdcToTime
- fHodoPosInvAdcOffset[index]
- fHodoPosInvAdcAdc[index]/TMath::Sqrt(TMath::Max(20.0,adc_pos));
} else { // Old style
timec_pos = tdc_pos*fScinTdcToTime - fHodoPosPhcCoeff[index]*
TMath::Sqrt(TMath::Max(0.0,adc_pos/fHodoPosMinPh[index]-1.0))
- fHodoPosTimeOffset[index];
}
}
if(btdcraw_neg) {
if(fTofUsingInvAdc) {
timec_neg = tdc_neg*fScinTdcToTime
- fHodoNegInvAdcOffset[index]
- fHodoNegInvAdcAdc[index]/TMath::Sqrt(TMath::Max(20.0,adc_neg));
} else { // Old style
timec_neg = tdc_neg*fScinTdcToTime - fHodoNegPhcCoeff[index]*
TMath::Sqrt(TMath::Max(0.0,adc_neg/fHodoNegMinPh[index]-1.0))
- fHodoNegTimeOffset[index];
}
}
((THcHodoHit*) fHodoHits->At(fNScinHits))->SetCorrectedTimes(timec_pos,timec_neg,
timec_pos,timec_neg,
0.0);
}
fNScinHits++; // One or more good time counter
}
......
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