97 TString histname=temp+
"_timehist";
100 string planenamelist;
101 DBRequest listextra[]={
103 {
"hodo_plane_names",&planenamelist, kString},
113 cout <<
"Plane Name List : " << planenamelist << endl;
115 vector<string> plane_names = Podd::vsplit(planenamelist);
118 cout <<
"ERROR: Number of planes " <<
fNPlanes <<
" doesn't agree with number of plane names " << plane_names.size() << endl;
123 fPlaneNames[i] =
new char[plane_names[i].length()+1];
128 char* desc =
new char[strlen(description)+100];
131 strcpy(desc, description);
132 strcat(desc,
" Plane ");
135 cout <<
"Created Scintillator Plane " <<
fPlaneNames[i] <<
", " << desc << endl;
160 char EngineDID[] =
"xSCIN";
163 static const char*
const here =
"Init()";
164 Error(
Here(here),
"Error filling detectormap for %s.", EngineDID );
232 strcpy(parname,prefix);
233 strcat(parname,
"scin_");
399 if (
fCosmicFlag==1) cout <<
"Setup for cosmics in TOF"<< endl;
407 cout <<
"WARNING: Unable to open TOF Dump file " <<
fTOFDumpFile << endl;
408 cout <<
"Data for TOF calibration not being written." << endl;
501 cout <<
"******* Testing Hodoscope Parameter Reading ***\n";
507 cout <<
"*** VelLight ***\n";
509 cout<<
"Plane "<<i1<<endl;
527 cout <<
"USING "<<
fTofTolerance<<
" NSEC WINDOW FOR FP NO_TRACK CALCULATIONS.\n";
531 cout <<
"*** USING DEFAULT 3 NSEC WINDOW FOR FP NO_TRACK CALCULATIONS!! ***\n";
560 {
"beta",
"Beta including track info",
"fBeta"},
561 {
"betanotrack",
"Beta from scintillator hits",
"fBetaNoTrk"},
562 {
"betachisqnotrack",
"Chi square of beta from scintillator hits",
"fBetaNoTrkChiSq"},
563 {
"fpHitsTime",
"Time at focal plane from all hits",
"fFPTimeAll"},
564 {
"starttime",
"Hodoscope Start Time",
"fStartTime"},
565 {
"goodstarttime",
"Hodoscope Good Start Time (logical flag)",
"fGoodStartTime"},
566 {
"goodscinhit",
"Hit in fid area",
"fGoodScinHits"},
567 {
"adctdc_offset",
" ",
"fOffsetTime"},
568 {
"TimeHist_StartTime_Sigma",
"",
"fTimeHist_StartTime_Sigma"},
569 {
"TimeHist_StartTime_Peak",
"",
"fTimeHist_StartTime_Peak"},
570 {
"TimeHist_StartTime_NumPeaks",
"",
"fTimeHist_StartTime_NumPeaks"},
571 {
"TimeHist_StartTime_Hits",
"",
"fTimeHist_StartTime_Hits"},
572 {
"TimeHist_FpTime_Sigma",
"",
"fTimeHist_FpTime_Sigma"},
573 {
"TimeHist_FpTime_Peak",
"",
"fTimeHist_FpTime_Peak"},
574 {
"TimeHist_FpTime_NumPeaks",
"",
"fTimeHist_FpTime_NumPeaks"},
575 {
"TimeHist_FpTime_Hits",
"",
"fTimeHist_FpTime_Hits"},
596 for(
int i = 0; i <
fNPlanes; ++i ) {
799 Int_t hTimeScanRange = 10.;
800 vector<Double_t> hpeakCent;
801 vector<Double_t> hpeakNum;
802 vector<Double_t> hpeakRMS;
803 vector<Double_t> hpeakFlag;
804 vector<Int_t> hpeakBin;
808 Double_t save_mean=0,save_rms=0,save_num=0;
813 Int_t best_peak_num=-1;
816 for (
Int_t nb=1;nb<NBinsX-hTimeScanRange;nb++) {
819 if (scanning_for_local_peak) {
820 if ( test_int <= test_peakmax) {
821 Int_t ps=hpeakCent.size();
824 if (ps==0) new_peak=
kTRUE;
825 if (ps!=0 && nb==hpeakBin[ps]+1 && save_mean!=hpeakCent[ps-1]) new_peak=
kFALSE;
826 if (ps!=0 && save_num > hpeakNum[ps-1] &&
abs(save_mean-hpeakCent[ps-1])<5) replace_peak=
kTRUE;
827 if (ps!=0 && nb!=hpeakBin[ps]+1 && save_num > MinimumNum &&
abs(save_mean-hpeakCent[ps-1])>=5) new_peak=
kTRUE;
829 hpeakCent.push_back(save_mean);
830 hpeakRMS.push_back(save_rms);
831 hpeakNum.push_back(save_num);
832 hpeakBin.push_back(save_bin);
833 hpeakFlag.push_back(1);
836 hpeakCent[ps-1]=save_mean;
837 hpeakRMS[ps-1]=save_rms;
838 hpeakNum[ps-1]=save_num;
839 hpeakBin[ps-1]=save_bin;
842 scanning_for_local_peak =
kFALSE;
849 if ( hpeakNum[
np] > 5 && (hpeakNum[
np]>= best_peak_num ||
abs(hpeakNum[
np] - best_peak_num)<= 4) ) {
850 if (nfound==0 || (hpeakNum[
np]== best_peak_num ||
abs(hpeakNum[
np] - best_peak_num)<= 4) ) {
852 if (nfound==0 ) best_peak_num =hpeakNum[
np] ;
853 if (nfound==0 ) best_peak_index=
np;
856 for (
UInt_t nt=0;nt<
np;nt++) {hpeakFlag[nt]=-1;}
858 best_peak_num =hpeakNum[
np] ;
881 test_peakmax = test_int;
888 if ( test_int > MinimumNum) {
889 test_peakmax = test_int;
890 scanning_for_local_peak =
kTRUE;
899 if (!hpeakNum.empty() && best_peak_index<hpeakNum.size() ) {
900 time_peak= hpeakCent[best_peak_index];
939 for(
Int_t i=0;i<nphits;i++) {
960 for(
Int_t i=0;i<nphits;i++) {
963 NAdcTdcDiffTimeSum++;
965 NAdcTdcDiffTimeSum++;
974 if (NAdcTdcDiffTimeSum>0) AdcTdcDiffTimeSum=AdcTdcDiffTimeSum/NAdcTdcDiffTimeSum;
983 Int_t Ngood_hits_plane=0;
984 Int_t Ngood_adchits_plane=0;
988 Bool_t twogoodtimes[nscinhits];
989 Int_t NumPlanesGoodHit=0;
990 Int_t NumPlanesGoodAdcHit=0;
993 goodplanetime[ip] =
kFALSE;
997 Plane_fptime_sum=0.0;
998 for(
Int_t i=0;i<nphits;i++) {
1000 twogoodtimes[ihit] =
kFALSE;
1009 twogoodtimes[ihit] =
kTRUE;
1022 Plane_fptime_sum+=fptime;
1023 fpTimeSum += fptime;
1025 goodplanetime[ip] =
kTRUE;
1043 Ngood_adchits_plane++;
1045 adcfpTimeSum += fptime;
1052 if (Ngood_hits_plane>0) NumPlanesGoodHit++;
1053 if (Ngood_adchits_plane>0) NumPlanesGoodAdcHit++;
1054 if (Ngood_hits_plane>0)
fPlanes[ip]->
SetFpTime(Plane_fptime_sum/
float(Ngood_hits_plane));
1059 if(NumPlanesGoodHit>=3) {
1064 if(NumPlanesGoodAdcHit>=3) {
1079 if(
fGoodStartTime && (goodplanetime[0]||goodplanetime[1]) &&(goodplanetime[2]||goodplanetime[3])) {
1092 for(
Int_t i=0;i<nphits;i++) {
1095 if(twogoodtimes[ihhit]){
1113 sumT += scinWeight * ((
THcHodoHit*)hodoHits->
At(i))->GetScinCorrectedTime();
1114 sumZ += scinWeight * zPosition;
1115 sumZZ += scinWeight * ( zPosition * zPosition );
1116 sumTZ += scinWeight * zPosition * ((
THcHodoHit*)hodoHits->
At(i))->GetScinCorrectedTime();
1123 Double_t tmp = sumW * sumZZ - sumZ * sumZ ;
1124 Double_t t0 = ( sumT * sumZZ - sumZ * sumTZ ) / tmp ;
1125 Double_t tmpDenom = sumW * sumTZ - sumZ * sumT;
1127 if (
TMath::Abs( tmpDenom ) > ( 1 / 10000000000.0 ) ) {
1137 for(
Int_t i=0;i<nphits;i++) {
1140 if(twogoodtimes[ihhit]) {
1211 vector<Double_t> nPmtHit(ntracks);
1212 vector<Double_t> timeAtFP(ntracks);
1213 fdEdX.reserve(ntracks);
1215 for (
Int_t itrack = 0; itrack < ntracks; itrack++ ) {
1220 if (!theTrack)
return -1;
1228 std::vector<Double_t> dedx_temp;
1229 std::vector<std::vector<GoodFlags> > goodflagstmp1;
1231#if __cplusplus >= 201103L
1232 fdEdX.push_back(std::move(dedx_temp));
1233 fGoodFlags.push_back(std::move(goodflagstmp1));
1235 fdEdX.push_back(dedx_temp);
1254 std::vector<GoodFlags> goodflagstmp2;
1256#if __cplusplus >= 201103L
1257 fGoodFlags[itrack].push_back(std::move(goodflagstmp2));
1286 Double_t zposition = zPos + (paddle%2)*dzPos;
1294 Double_t scinTrnsCoord, scinLongCoord;
1295 if ( ( ip == 0 ) || ( ip == 2 ) ){
1296 scinTrnsCoord = xHitCoord;
1297 scinLongCoord = yHitCoord;
1298 }
else if ( ( ip == 1 ) || ( ip == 3 ) ){
1299 scinTrnsCoord = yHitCoord;
1300 scinLongCoord = xHitCoord;
1301 }
else {
return -1; }
1303 fTOFPInfo[ihhit].scinTrnsCoord = scinTrnsCoord;
1304 fTOFPInfo[ihhit].scinLongCoord = scinLongCoord;
1312 if (
TMath::Abs( scinCenter - scinTrnsCoord ) <
1316 Double_t zcor = zposition/(29.979*betatrack)*
1321 Double_t zcor = -zposition/(29.979*1.0)*
1356 pathp=scinLongCoord;
1378 pathn=scinLongCoord ;
1404 for(
Int_t ih = 0; ih < nhits; ih++) {
1418 fdEdX[itrack].reserve(nhits);
1420 for(
Int_t ih=0; ih < nhits; ih++) {
1428 assert( iphit >= 0 && (
size_t)iphit <
fGoodFlags[itrack][ip].
size() );
1436 assert( ih >= 0 && (
size_t)ih <
fTOFCalc.size() );
1445 fTOFCalc[ih].good_raw_pad = paddle;
1513 if (
fTOFCalc[ih].good_scin_time ){
1521 sumFPTime = sumFPTime + scin_time_fp;
1529 nPmtHit[itrack] = nPmtHit[itrack] + 2;
1531 nPmtHit[itrack] = nPmtHit[itrack] + 1;
1534 fdEdX[itrack].push_back(0.0);
1561 if (
fTOFCalc[ih].good_scin_time ){
1592 for(
Int_t ih=0; ih < nhits; ih++) {
1595 if (
fTOFCalc[ih].good_scin_time ) {
1603 sumT += scinWeight *
fTOFCalc[ih].scin_time;
1604 sumZ += scinWeight * zPosition;
1605 sumZZ += scinWeight * ( zPosition * zPosition );
1606 sumTZ += scinWeight * zPosition *
fTOFCalc[ih].scin_time;
1611 Double_t tmp = sumW * sumZZ - sumZ * sumZ ;
1612 Double_t t0 = ( sumT * sumZZ - sumZ * sumTZ ) / tmp ;
1613 Double_t tmpDenom = sumW * sumTZ - sumZ * sumT;
1615 if (
TMath::Abs( tmpDenom ) > ( 1 / 10000000000.0 ) ) {
1617 beta = tmp / tmpDenom;
1620 for(
Int_t ih=0; ih < nhits; ih++) {
1623 if (
fTOFCalc[ih].good_scin_time ){
1628 betaChiSq += ( ( zPosition /
beta - timeDif ) *
1629 ( zPosition /
beta - timeDif ) ) /
1651 if ( nFPTime != 0 ){
1652 timeAtFP[itrack] = ( sumFPTime / nFPTime );
1659 Int_t nGoodPlanesHit=0;
1667 fFPTime[ip] = 1000. * ( ip + 1 );
1672 if (nGoodPlanesHit>=3) fptime = FPTimeSum/nFPTimeSum;
1676 if( ih.good_scin_time ) {
1685 theTrack->
SetNPMT(nPmtHit[itrack]);
1706 const Int_t MaxNCluster=5;
1707 std::vector<Int_t > iw(MaxNCluster,0);
1708 std::vector<Double_t > dw(MaxNCluster,0);
1719 Int_t num_good_pad=0;
1722 Int_t prev_padnum=-100;
1727 Int_t padnum = padind+1;
1729 if (ip==0 || ip==2) pl_y = ((
THcHodoHit*)hodoHits->
At(iphit))->GetCalcPosition();
1731 if (ip==1 || ip==3) pl_x = ((
THcHodoHit*)hodoHits->
At(iphit))->GetCalcPosition();
1733 pl_calcpos=((
THcHodoHit*)hodoHits->
At(iphit))->GetCalcPosition();
1758 if (num_good_pad !=0 ) {
1759 pl_xypos=pl_xypos/num_good_pad;
1760 pl_calcpos=pl_calcpos/num_good_pad;
1761 pl_zpos=pl_zpos/num_good_pad;
1772 Int_t best_cluster[4]={-1,-1,-1,-1};
1778 for (
Int_t nch = 0; nch < 2; nch++ ){
1789 if ( (ic1==0 && ic2==0) || (diffx <=diffx_test && diffy <=diffy_test)) {
1792 best_cluster[pl1]=ic1;
1793 best_cluster[pl2]=ic2;
1797 if (
fNCluster[pl1]==1) best_cluster[pl1]=0;
1798 if (
fNCluster[pl2]==1) best_cluster[pl2]=0;
1802 Int_t pl_test1[4]={0,1,2,3};
1803 Int_t pl_test2[4]={2,3,0,1};
1804 for (
Int_t npl = 0; npl < 4; npl++ ){
1807 if (
fNCluster[pl1]>0 && best_cluster[pl1]==-1 &&
fNCluster[pl2]>0 && best_cluster[pl2]>-1) {
1813 if ( (diffx <=diffx_test && diffy <=diffy_test)) {
1816 best_cluster[pl1]=ic1;
1825 for (
Int_t npl = 0; npl < 4; npl++ ){
1860 if (lowtemp < hitemp) {
1861 PadPosLo[ip]=lowtemp;
1862 PadPosHi[ip]=hitemp;
1864 PadPosLo[ip]=hitemp;
1865 PadPosHi[ip]=lowtemp;
1869 const Int_t MaxNClus=5;
1870 std::vector<Int_t > iw(MaxNClus,0);
1871 std::vector<Double_t > dw(MaxNClus,0);
1879 Int_t prev_padnum=-100;
1884 if ( padnum==prev_padnum+1 ) {
1896 if (!(hit->
GetTwoGoodTimes()) && efftest_debug) cout <<
"no two good times plane = " << ip+1 <<
" hit = " << iphit << endl;
1900 Bool_t inside_bound[4][MaxNClus];
1907 inside_bound[ip][ic] =
fClustPos[ip][ic]>=PadPosLo[ip] &&
fClustPos[ip][ic]<=PadPosHi[ip];
1908 if (efftest_debug) cout <<
"plane = " << ip+1 <<
" Cluster = " << ic+1 <<
" size = " <<
fClustSize[ip][ic]<<
" pos = " <<
fClustPos[ip][ic] <<
" inside = " << inside_bound[ip][ic] <<
" lo = " << PadPosLo[ip]<<
" hi = " << PadPosHi[ip]<< endl;
1912 Int_t MaxClusterSize=3;
1913 Int_t good_for_track_test[4][MaxNClus];
1914 Int_t sum_good_track_test[4]={0,0,0,0};
1915 Int_t num_good_plane_hit=0;
1918 if (inside_bound[ip][ic] &&
fClustSize[ip][ic]<=MaxClusterSize) {
1920 good_for_track_test[ip][ic]=1;
1921 sum_good_track_test[ip]++;
1922 if (sum_good_track_test[ip]==1) num_good_plane_hit++;
1924 good_for_track_test[ip][ic]=0;
1926 if (efftest_debug) cout <<
" ip " << ip+1 <<
" clus = " << ic <<
" good for track = " << good_for_track_test[ip][ic] << endl;
1928 if (efftest_debug) cout <<
" ip = " << ip+1 <<
" sum_good_track_test = " << sum_good_track_test[ip] << endl;
1930 if (efftest_debug) cout <<
" number of planes hits = " << num_good_plane_hit << endl;
1941 if (good_for_track_test[0][ic0] && good_for_track_test[2][ic2]) {
1952 if (good_for_track_test[1][ic1] && good_for_track_test[3][ic3]) {
1960 if (efftest_debug) cout <<
" 4 good planes xdiff = " << xdiffTest <<
" ydiff = " << ydiffTest << endl;
1967 if (sum_good_track_test[0]>0&&sum_good_track_test[2]>0) {
1970 if (good_for_track_test[0][ic0] && good_for_track_test[2][ic2]) {
1978 if ((sum_good_track_test[1]>0||sum_good_track_test[3]>0)) {
1981 if (good_for_track_test[1][ic1] && good_for_track_test[3][ic3]) {
1989 if (efftest_debug) cout <<
" 3 good planes xdiff = " << xdiffTest <<
" ydiff = " << ydiffTest << endl;
1991 if (efftest_debug) cout <<
" ************" << endl;
2008 cout <<
" loop over planes " << ip+1 << endl;
2015 cout <<
" hits = " <<
fNScinHits[ip] << endl;
2020 cout <<
" hit = " << iphit+1 <<
" " << paddle+1 << endl;
2038 cout <<
" looking for cluster in x planes" << endl;
2040 for (
Int_t ip = 0; ip < 3; ip +=2 ) {
2043 cout <<
"plane =" << ip <<
"check if paddle 1 hit " << icount << endl;
2050 cout <<
" paddle = " << ipaddle+1 <<
" " << icount << endl;
2053 cout <<
"Two cluster in plane = " << ip+1 <<
" " << icount << endl;
2065 cout <<
"Three clusters in plane = " << ip+1 <<
" " << icount << endl;
2074 cout <<
" looking for cluster in y planes" << endl;
2082 cout <<
"plane =" << ip <<
"check if paddle 1 hit " << icount << endl;
2090 cout <<
" paddle = " << ipaddle+1 <<
" " << icount << endl;
2093 cout <<
"Two cluster in plane = " << ip+1 <<
" " << icount << endl;
2107 cout <<
"Three clusters in plane = " << ip+1 <<
" " << icount << endl;
2218 for (
Int_t itrk=0; itrk<Ntracks; itrk++) {
2227 Int_t num_good_pad=0;
2237 fDumpOut << fixed << setprecision(2);
2250 if (num_good_pad !=0 ) {
2251 pl_xypos=pl_xypos/num_good_pad;
2252 pl_zpos=pl_zpos/num_good_pad;
2253 hitPos = theTrack->
GetY() + theTrack->
GetPhi()*pl_zpos ;
2254 if (ip%2 == 0) hitPos = theTrack->
GetX() + theTrack->
GetTheta()*pl_zpos ;
2255 hitDistance = hitPos - pl_xypos;
size_t size(const MatrixT &matrix)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char mode
R__EXTERN class THaVarList * gHaVars
R__EXTERN class THaCutList * gHaCuts
ClassImp(VDC::AnalyticTTDConv) using namespace std
R__EXTERN class THcParmList * gHcParms
R__EXTERN class THcDetectorMap * gHcDetectorMap
char * Form(const char *fmt,...)
virtual void SetRange(Int_t first=0, Int_t last=0)
void Reset(Option_t *option="") override
virtual Double_t GetMean(Int_t axis=1) const
virtual Int_t GetNbinsX() const
virtual Int_t Fill(const char *name, Double_t w)
Double_t GetRMS(Int_t axis=1) const
virtual Double_t Integral(Int_t binx1, Int_t binx2, Option_t *option="") const
static Int_t DefineVarsFromList(const void *list, EType type, EMode mode, const char *def_prefix, const TObject *obj, const char *prefix, const char *here, const char *comment_subst="")
virtual const char * Here(const char *) const
virtual Int_t Result(const char *cutname="", EWarnMode mode=kWarn)
UInt_t GetTotNumChan() const
const Double_t * GetSize() const
THaApparatus * GetApparatus() const
void SetFPTime(Double_t fptime)
void SetDedx(Double_t dedx)
void SetGoodPlane4(Int_t gdplane4)
void SetGoodPlane3(Int_t gdplane3)
Double_t GetEnergy() const
Double_t GetTheta() const
void SetBeta(Double_t beta)
void SetBetaChi2(Double_t betachi2)
Double_t GetFPTime() const
virtual THaVar * Find(const char *name) const
const void * GetValuePointer() const
Class for gas Cherenkov detectors.
virtual Int_t FillMap(THaDetMap *detmap, const char *detectorname)
A standard Hall C spectrometer apparatus.
virtual Int_t DecodeToHitList(const THaEvData &evdata, Bool_t suppress=kFALSE)
Populate the hitlist from the raw event data.
TClonesArray * fRawHitList
void CreateMissReportParms(const char *prefix) const
void InitHitList(THaDetMap *detmap, const char *hitclass, Int_t maxhits, Int_t tdcref_cut=0, Int_t adcref_cut=0)
Save the electronics module to detector mapping and initialize a hit array of hits of class hitclass.
void MissReport(const char *name) const
Class representing a single hit for the Hodoscopes.
Double_t GetNegADCtime() const
Double_t GetPosADCpeak() const
Double_t GetPosADCtime() const
Double_t GetNegADCCorrtime() const
Double_t GetPosADC() const
Double_t GetPosTOFCorrectedTime() const
Double_t GetNegTOFCorrectedTime() const
Double_t GetPosADCCorrtime() const
Double_t GetPosCorrectedTime() const
Double_t GetNegADC() const
Bool_t GetTwoGoodTimes() const
Double_t GetNegCorrectedTime() const
Int_t GetPaddleNumber() const
Bool_t GetHasCorrectedTimes() const
void SetTwoGoodTimes(Bool_t flag)
Double_t GetNegADCpeak() const
Double_t GetScinCorrectedTime() const
Generic hodoscope consisting of multiple planes with multiple paddles with phototubes on both ends.
std::vector< std::vector< Int_t > > fClustSize
Double_t * fHodoPosInvAdcAdc
Double_t * fHodoNegTimeOffset
std::vector< std::vector< Int_t > > fScinHitPaddle
Double_t fTimeHist_StartTime_Hits
Double_t fTimeHist_FpTime_NumPeaks
std::vector< std::vector< Double_t > > fClusterYPos
THcScintillatorPlane ** fPlanes
Double_t fTOFCalib_beta_lo
Double_t * fHodoPosPhcCoeff
virtual Int_t ReadDatabase(const TDatime &date)
Double_t trackeff_scint_ydiff_max
void EstimateFocalPlaneTime(void)
Double_t * fHodoPosAdcTimeWindowMin
Double_t * fHodoNegAdcTimeWindowMin
virtual Int_t End(THaRunBase *run=0)
Double_t * fHodoPosTimeOffset
Double_t fTimeHist_FpTime_Peak
std::vector< Int_t > fThreeScin
Double_t * fHodoNegInvAdcLinear
Double_t DetermineTimePeak(Int_t FillFlag)
Double_t * fHodoPosAdcTimeWindowMax
Bool_t fGoodEventTOFCalib
virtual EStatus Init(const TDatime &run_time)
Double_t * fHodoNegPhcCoeff
std::vector< TOFPInfo > fTOFPInfo
Double_t fTOFCalib_beta_hi
Double_t fTimeHist_StartTime_NumPeaks
virtual Int_t Decode(const THaEvData &)
Double_t fTimeHist_FpTime_Hits
THcCherenkov * fCherenkov
std::vector< std::vector< std::vector< GoodFlags > > > fGoodFlags
Double_t fTOFCalib_shtrk_hi
std::vector< Int_t > fNCluster
void OriginalTrackEffTest(void)
std::vector< Int_t > fNScinHit
virtual Int_t DefineVariables(EMode mode=kDefine)
Int_t fTrackBetaIncludeSinglePmtHits
std::vector< Int_t > fGoodScinHitsX
Double_t fTimeHist_StartTime_Sigma
Double_t * fHodoNegInvAdcAdc
Double_t * fHodoPosInvAdcLinear
Double_t fStartTimeCenter
std::vector< Int_t > fNClust
Double_t * fHodoNegAdcTimeWindowMax
Double_t fTOFCalib_shtrk_lo
Double_t fPathLengthCentral
Int_t fTrackEffTestNScinPlanes
void Setup(const char *name, const char *description)
Int_t GetScinIndex(Int_t nPlane, Int_t nPaddle)
Double_t GetHodoSlop(Int_t ip)
Double_t fTOFCalib_cer_lo
Double_t fTimeHist_StartTime_Peak
std::vector< std::vector< Double_t > > fdEdX
Double_t * fHodoPosInvAdcOffset
virtual Double_t TimeWalkCorrection(const Int_t &paddle, const ESide side)
Double_t fRatio_xpfp_to_xfp
virtual Int_t CoarseProcess(TClonesArray &tracks)
std::vector< std::vector< Double_t > > fClusterXPos
std::vector< TOFCalc > fTOFCalc
Double_t * fHodoNegInvAdcOffset
virtual void Clear(Option_t *opt="")
virtual Int_t ApplyCorrections(void)
Double_t fTimeHist_FpTime_Sigma
Double_t GetPathLengthCentral()
std::vector< std::vector< Int_t > > fClusterSize
virtual Int_t FineProcess(TClonesArray &tracks)
Double_t trackeff_scint_xdiff_max
std::vector< std::vector< Double_t > > fClustPos
Int_t LoadParmValues(const DBRequest *list, const char *prefix="")
Retrieve parameter values from the parameter cache.
A single plane of scintillators.
void SetCluster(Int_t ic, Double_t pos)
void SetFpTime(Double_t f)
virtual void Clear(Option_t *opt="")
virtual void CalculatePedestals()
void SetTrackXPosition(Double_t f)
void SetScinXPos(Double_t f)
void SetScinYPos(Double_t f)
virtual Int_t ProcessHits(TClonesArray *rawhits, Int_t nexthit)
void SetNumberClusters(Int_t nclus)
virtual Int_t AccumulatePedestals(TClonesArray *rawhits, Int_t nexthit)
void SetNGoodHits(Int_t ng)
void SetHitDistance(Double_t f)
void SetClusterUsedFlag(Int_t ic, Double_t flag)
void SetTrackYPosition(Double_t f)
Double_t GetPosCenter(Int_t PaddleNo)
void SetClusterSize(Int_t ic, Double_t size)
void SetClusterFlag(Int_t ic, Double_t flag)
const char * GetName() const override
const char * GetTitle() const override
TObject * At(Int_t idx) const override
R__ALWAYS_INLINE Bool_t IsZombie() const
virtual void Error(const char *method, const char *msgfmt,...) const
double beta(double x, double y)
RVec< PromoteType< T > > abs(const RVec< T > &v)
RVec< PromoteTypes< T0, T1 > > pow(const RVec< T0 > &v, const T1 &y)
Double_t Power(Double_t x, Double_t y)
Double_t Sqrt(Double_t x)
Double_t Max(Double_t a, Double_t b)