9 vector<string> locBinLabels = {
"TMatrixFSym",
"DKinematicInfo",
"Charged DTimingInfo",
"DTrackingInfo",
"Neutral DTimingInfo",
"KinematicDatas",
"Charged Hypos",
"Neutral Hypos",
"Beam Photons",
10 "Combo RF Bunches",
"Source Combos",
"Source Combo Vectors",
"Particle Combos",
"Particle Combo Steps",
11 "DKinFitParticle",
"DKinFitChainStep",
"DKinFitChain",
"DKinFitResults",
"DKinFitConstraint_Mass",
"DKinFitConstraint_P4",
"DKinFitConstraint_Vertex",
"DKinFitConstraint_Spacetime"};
12 for(
size_t loc_i = 0; loc_i < locBinLabels.size(); ++loc_i)
13 dBinMap[locBinLabels[loc_i]] = loc_i + 1;
17 japp->RootWriteLock();
25 string locHistName =
"TotalMemory";
26 string locHistTitle =
";Event Counter;Total Memory (MB)";
30 locHistName =
"NumObjects2D";
31 locHistTitle =
"# Objects;Event Counter";
32 dHist_NumObjects = GetOrCreate_Histogram<TH2I>(locHistName, locHistTitle,
dMaxNumEvents, 0.5, float(dMaxNumEvents) + 0.5, locBinLabels.size(), 0.5, float(locBinLabels.size()) + 0.5);
33 for(
size_t loc_i = 0; loc_i < locBinLabels.size(); ++loc_i)
34 dHist_NumObjects->GetYaxis()->SetBinLabel(1 + loc_i, locBinLabels[loc_i].c_str());
37 locHistName =
"Memory2D";
38 locHistTitle =
"Memory (MB);Event Counter";
39 dHist_Memory = GetOrCreate_Histogram<TH2F>(locHistName, locHistTitle,
dMaxNumEvents, 0.5, float(dMaxNumEvents) + 0.5, locBinLabels.size(), 0.5, float(locBinLabels.size()) + 0.5);
40 for(
size_t loc_i = 0; loc_i < locBinLabels.size(); ++loc_i)
41 dHist_Memory->GetYaxis()->SetBinLabel(1 + loc_i, locBinLabels[loc_i].c_str());
57 if(locParticleCombo !=
nullptr)
65 vector<const DAnalysisResults*> locAnalysisResults;
66 locEventLoop->Get(locAnalysisResults);
68 map<int, size_t> locNumObjectsMap;
69 map<int, double> locMemoryMap;
70 double locTotalMemory = 0.0;
75 auto locBin =
dBinMap[
"TMatrixFSym"];
77 auto locMemory = (
sizeof(TMatrixDSym) + 7*7*4)*locNumObjectsMap[locBin];
78 locMemoryMap[locBin] = locMemory;
79 locTotalMemory += locMemory;
82 locBin =
dBinMap[
"DKinematicInfo"];
85 locMemoryMap[locBin] = locMemory;
86 locTotalMemory += locMemory;
89 locBin =
dBinMap[
"Charged DTimingInfo"];
92 locMemoryMap[locBin] = locMemory;
93 locTotalMemory += locMemory;
96 locBin =
dBinMap[
"DTrackingInfo"];
99 locMemoryMap[locBin] = locMemory;
100 locTotalMemory += locMemory;
103 locBin =
dBinMap[
"Neutral DTimingInfo"];
106 locMemoryMap[locBin] = locMemory;
107 locTotalMemory += locMemory;
112 locBin =
dBinMap[
"KinematicDatas"];
115 locMemoryMap[locBin] = locMemory;
116 locTotalMemory += locMemory;
119 locBin =
dBinMap[
"Charged Hypos"];
122 locMemoryMap[locBin] = locMemory;
123 locTotalMemory += locMemory;
126 locBin =
dBinMap[
"Neutral Hypos"];
129 locMemoryMap[locBin] = locMemory;
130 locTotalMemory += locMemory;
133 locBin =
dBinMap[
"Beam Photons"];
135 locMemory =
sizeof(
DBeamPhoton)*locNumObjectsMap[locBin];
136 locMemoryMap[locBin] = locMemory;
137 locTotalMemory += locMemory;
142 locBin =
dBinMap[
"Combo RF Bunches"];
145 locMemoryMap[locBin] = locMemory;
146 locTotalMemory += locMemory;
149 locBin =
dBinMap[
"Source Combos"];
151 locMemory =
sizeof(
DSourceCombo)*locNumObjectsMap[locBin];
152 locMemoryMap[locBin] = locMemory;
153 locTotalMemory += locMemory;
156 locBin =
dBinMap[
"Source Combo Vectors"];
158 locMemory =
sizeof(vector<const DSourceCombo*>)*locNumObjectsMap[locBin];
159 locMemoryMap[locBin] = locMemory;
160 locTotalMemory += locMemory;
163 locBin =
dBinMap[
"Particle Combos"];
166 locMemoryMap[locBin] = locMemory;
167 locTotalMemory += locMemory;
170 locBin =
dBinMap[
"Particle Combo Steps"];
173 locMemoryMap[locBin] = locMemory;
174 locTotalMemory += locMemory;
179 locBin =
dBinMap[
"DKinFitParticle"];
182 locMemoryMap[locBin] = locMemory;
183 locTotalMemory += locMemory;
186 locBin =
dBinMap[
"DKinFitChainStep"];
189 locMemoryMap[locBin] = locMemory;
190 locTotalMemory += locMemory;
193 locBin =
dBinMap[
"DKinFitChain"];
195 locMemory =
sizeof(
DKinFitChain)*locNumObjectsMap[locBin];
196 locMemoryMap[locBin] = locMemory;
197 locTotalMemory += locMemory;
200 locBin =
dBinMap[
"DKinFitResults"];
203 locMemoryMap[locBin] = locMemory;
204 locTotalMemory += locMemory;
209 locBin =
dBinMap[
"DKinFitConstraint_Mass"];
212 locMemoryMap[locBin] = locMemory;
213 locTotalMemory += locMemory;
216 locBin =
dBinMap[
"DKinFitConstraint_P4"];
219 locMemoryMap[locBin] = locMemory;
220 locTotalMemory += locMemory;
223 locBin =
dBinMap[
"DKinFitConstraint_Vertex"];
226 locMemoryMap[locBin] = locMemory;
227 locTotalMemory += locMemory;
230 locBin =
dBinMap[
"DKinFitConstraint_Spacetime"];
233 locMemoryMap[locBin] = locMemory;
234 locTotalMemory += locMemory;
237 for(
auto& locMemoryPair : locMemoryMap)
238 locMemoryPair.second /= (1024.0*1024.0);
239 locTotalMemory /= (1024.0*1024.0);
249 for(
auto& locNumObjectsPair : locNumObjectsMap)
251 int locObjectBin = locNumObjectsPair.first;
274 ifstream stat_stream(
"/proc/self/stat",ios_base::in);
277 string pid, comm, state, ppid, pgrp, session, tty_nr;
278 string tpgid, flags, minflt, cminflt, majflt, cmajflt;
279 string utime, stime, cutime, cstime, priority, nice;
280 string O, itrealvalue, starttime;
286 stat_stream >> pid >> comm >> state >> ppid >> pgrp >> session >> tty_nr
287 >> tpgid >> flags >> minflt >> cminflt >> majflt >> cmajflt
288 >> utime >> stime >> cutime >> cstime >> priority >> nice
289 >> O >> itrealvalue >> starttime >> vsize >> rss;
293 long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024;
294 vm_usage = vsize / 1024.0;
295 resident_set = rss * page_size_kb;
306 string locHistName, locHistTitle;
309 bool locIsRESTEvent = locEventLoop->GetJEvent().GetStatusBit(
kSTATUS_REST);
311 vector<const DMCThrown*> locMCThrowns;
312 locEventLoop->Get(locMCThrowns);
316 double locTargetZCenter = 0.0;
321 japp->RootWriteLock();
331 locHistName =
"FCALShowerYVsX";
333 locHistName =
"FCALShowerEnergy";
337 locHistName =
"BCALShowerEnergy";
339 locHistName =
"BCALShowerPhi";
341 locHistName =
"BCALShowerPhiVsZ";
345 locHistName =
"TOFPointEnergy";
347 locHistName =
"TOFPointYVsX";
351 locHistName =
"SCHitSector";
352 dHist_SCHitSector = GetOrCreate_Histogram<TH1I>(locHistName,
";SC Hit Sector", 30, 0.5, 30.5);
353 locHistName =
"SCHitEnergy";
355 locHistName =
"SCHitEnergyVsSector";
357 locHistName =
"SCRFDeltaTVsSector";
361 locHistName =
"TAGMRFDeltaTVsColumn";
363 locHistName =
"TAGHRFDeltaTVsCounter";
368 locHistName =
"NumDCHitsPerTrack";
370 locHistName =
"NumPossDCHitsPerTrack";
372 locHistName =
"TrackHitFraction";
373 dHist_TrackHitFraction = GetOrCreate_Histogram<TH1I>(locHistName,
";# Track Hits/# Possible Track Hits", 50, 0.0, 1.0);
374 locHistName =
"NumDCHitsPerTrackVsTheta";
376 locHistName =
"NumPossDCHitsPerTrackVsTheta";
378 locHistName =
"TrackHitFractionVsTheta";
380 locHistName =
"TrackingFOM_WireBased";
382 locHistName =
"TrackingFOM";
384 locHistName =
"TrackingFOMVsP";
386 locHistName =
"TrackingFOMVsTheta";
388 locHistName =
"TrackingFOMVsNumHits";
393 locHistName =
"CDCRingVsTheta_Candidates";
395 locHistName =
"CDCRingVsTheta_WireBased";
399 locHistName =
"CDCRingVsTheta_TimeBased";
401 locHistName =
"CDCRingVsTheta_TimeBased_GoodTrackFOM";
406 locHistName =
"FDCPlaneVsTheta_Candidates";
408 locHistName =
"FDCPlaneVsTheta_WireBased";
412 locHistName =
"FDCPlaneVsTheta_TimeBased";
414 locHistName =
"FDCPlaneVsTheta_TimeBased_GoodTrackFOM";
417 if(!locMCThrowns.empty())
419 locHistName =
"MCMatchedHitsVsTheta";
421 locHistName =
"MCMatchedHitsVsP";
425 for(
int locCharge = -1; locCharge <= 1; locCharge += 2)
427 string locParticleROOTName = (locCharge == -1) ?
"#it{q}^{-}" :
"#it{q}^{+}";
428 string locParticleName = (locCharge == -1) ?
"q-" :
"q+";
434 locHistName =
string(
"PVsTheta_Candidates_") + locParticleName;
435 locHistTitle = locParticleROOTName +
string(
" Track Candidates;#theta#circ;p (GeV/c)");
439 locHistName =
string(
"PVsTheta_WireBased_") + locParticleName;
440 locHistTitle = locParticleROOTName +
string(
" Wire-Based Tracks;#theta#circ;p (GeV/c)");
445 locHistName =
string(
"PVsTheta_TimeBased_") + locParticleName;
446 locHistTitle = locParticleROOTName +
string(
" Time-Based Tracks;#theta#circ;p (GeV/c)");
450 locHistName =
string(
"PVsTheta_TimeBased_GoodTrackFOM_") + locParticleName;
451 locHistTitle = locParticleROOTName +
string(
" Time-Based Tracks, Good Tracking FOM;#theta#circ;p (GeV/c)");
455 locHistName =
string(
"PVsTheta_TimeBased_LowTrackFOM_") + locParticleName;
456 locHistTitle = locParticleROOTName +
string(
" Time-Based Tracks, Low Tracking FOM;#theta#circ;p (GeV/c)");
460 locHistName =
string(
"PVsTheta_TimeBased_HighTrackFOM_") + locParticleName;
461 locHistTitle = locParticleROOTName +
string(
" Time-Based Tracks, High Tracking FOM;#theta#circ;p (GeV/c)");
467 locHistName =
string(
"PVsTheta_GoodWireBased_GoodTimeBased_") + locParticleName;
468 locHistTitle = locParticleROOTName +
string(
" Good Wire-Based, Good Time-Based;#theta#circ;p (GeV/c)");
472 locHistName =
string(
"PVsTheta_GoodWireBased_BadTimeBased_") + locParticleName;
473 locHistTitle = locParticleROOTName +
string(
" Good Wire-Based, Bad Time-Based;#theta#circ;p (GeV/c)");
477 gDirectory->cd(
"..");
479 gDirectory->cd(
"..");
494 bool locIsRESTEvent = locEventLoop->GetJEvent().GetStatusBit(
kSTATUS_REST);
496 vector<const DBCALShower*> locBCALShowers;
497 locEventLoop->Get(locBCALShowers);
499 vector<const DFCALShower*> locFCALShowers;
500 locEventLoop->Get(locFCALShowers);
502 vector<const DTOFPoint*> locTOFPoints;
503 locEventLoop->Get(locTOFPoints);
505 vector<const DSCHit*> locSCHits;
506 locEventLoop->Get(locSCHits);
508 vector<const DBeamPhoton*> locBeamPhotons;
509 locEventLoop->Get(locBeamPhotons);
512 locEventLoop->GetSingle(locDetectorMatches);
514 vector<const DTrackTimeBased*> locTrackTimeBasedVector;
515 locEventLoop->Get(locTrackTimeBasedVector);
517 vector<const DMCThrownMatching*> locMCThrownMatchingVector;
518 locEventLoop->Get(locMCThrownMatchingVector);
520 vector<const DMCThrown*> locMCThrowns;
521 locEventLoop->Get(locMCThrowns,
"FinalState");
524 locEventLoop->GetSingle(locParticleID);
527 locEventLoop->GetSingle(locEventRFBunch);
530 vector<const DTrackCandidate*> locTrackCandidates;
531 vector<const DTrackWireBased*> locTrackWireBasedVector;
534 vector<const DDetectorMatches*> locDetectorMatchesVector_WireBased;
535 locEventLoop->Get(locDetectorMatchesVector_WireBased,
"WireBased");
536 if(!locDetectorMatchesVector_WireBased.empty())
537 locDetectorMatches_WireBased = locDetectorMatchesVector_WireBased[0];
538 locEventLoop->Get(locTrackCandidates);
539 locEventLoop->Get(locTrackWireBasedVector);
543 map<JObject::oid_t, const DTrackWireBased*> locBestTrackWireBasedMap;
544 for(
size_t loc_i = 0; loc_i < locTrackWireBasedVector.size(); ++loc_i)
546 JObject::oid_t locCandidateID = locTrackWireBasedVector[loc_i]->candidateid;
547 if(locBestTrackWireBasedMap.find(locCandidateID) == locBestTrackWireBasedMap.end())
548 locBestTrackWireBasedMap[locCandidateID] = locTrackWireBasedVector[loc_i];
549 else if(locTrackWireBasedVector[loc_i]->FOM > locBestTrackWireBasedMap[locCandidateID]->FOM)
550 locBestTrackWireBasedMap[locCandidateID] = locTrackWireBasedVector[loc_i];
556 map<JObject::oid_t, const DTrackTimeBased*> locBestTrackTimeBasedMap;
557 map<const DTrackWireBased*, const DTrackTimeBased*> locWireToTimeBasedTrackMap;
558 map<const DTrackTimeBased*, shared_ptr<const DSCHitMatchParams>> locTimeBasedToBestSCMatchMap;
559 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
562 shared_ptr<const DSCHitMatchParams> locSCHitMatchParams;
563 if(locParticleID->
Get_BestSCMatchParams(locTrackTimeBasedVector[loc_i], locDetectorMatches, locSCHitMatchParams))
564 locTimeBasedToBestSCMatchMap[locTrackTimeBasedVector[loc_i]] = locSCHitMatchParams;
566 JObject::oid_t locCandidateID = locTrackTimeBasedVector[loc_i]->candidateid;
567 if(locBestTrackTimeBasedMap.find(locCandidateID) == locBestTrackTimeBasedMap.end())
568 locBestTrackTimeBasedMap[locCandidateID] = locTrackTimeBasedVector[loc_i];
569 else if(locTrackTimeBasedVector[loc_i]->FOM > locBestTrackTimeBasedMap[locCandidateID]->FOM)
570 locBestTrackTimeBasedMap[locCandidateID] = locTrackTimeBasedVector[loc_i];
574 locTrackTimeBasedVector[loc_i]->GetSingle(locTrackWireBased);
575 locWireToTimeBasedTrackMap[locTrackWireBased] = locTrackTimeBasedVector[loc_i];
584 for(
size_t loc_i = 0; loc_i < locFCALShowers.size(); ++loc_i)
587 dHist_FCALShowerYVsX->Fill(locFCALShowers[loc_i]->getPosition().
X(), locFCALShowers[loc_i]->getPosition().Y());
591 for(
size_t loc_i = 0; loc_i < locBCALShowers.size(); ++loc_i)
595 DVector3 locBCALPosition(locBCALShowers[loc_i]->
x, locBCALShowers[loc_i]->
y, locBCALShowers[loc_i]->z);
596 double locBCALPhi = locBCALPosition.Phi()*180.0/TMath::Pi();
602 for(
size_t loc_i = 0; loc_i < locTOFPoints.size(); ++loc_i)
609 for(
size_t loc_i = 0; loc_i < locSCHits.size(); ++loc_i)
617 for(
size_t loc_i = 0; loc_i < locBeamPhotons.size(); ++loc_i)
619 double locDeltaT = locBeamPhotons[loc_i]->time() - locEventRFBunch->
dTime;
620 if(locBeamPhotons[loc_i]->dSystem ==
SYS_TAGM)
627 for(
size_t loc_i = 0; loc_i < locTrackCandidates.size(); ++loc_i)
629 int locCharge = (locTrackCandidates[loc_i]->charge() > 0.0) ? 1 : -1;
630 double locTheta = locTrackCandidates[loc_i]->momentum().Theta()*180.0/TMath::Pi();
631 double locP = locTrackCandidates[loc_i]->momentum().Mag();
634 set<int> locCDCRings;
635 locParticleID->
Get_CDCRings(locTrackCandidates[loc_i]->dCDCRings, locCDCRings);
636 for(set<int>::iterator locIterator = locCDCRings.begin(); locIterator != locCDCRings.end(); ++locIterator)
639 set<int> locFDCPlanes;
640 locParticleID->
Get_FDCPlanes(locTrackCandidates[loc_i]->dFDCPlanes, locFDCPlanes);
641 for(set<int>::iterator locIterator = locFDCPlanes.begin(); locIterator != locFDCPlanes.end(); ++locIterator)
646 map<JObject::oid_t, const DTrackWireBased*>::iterator locWireBasedIterator = locBestTrackWireBasedMap.begin();
647 for(; locWireBasedIterator != locBestTrackWireBasedMap.end(); ++locWireBasedIterator)
649 const DTrackWireBased* locTrackWireBased = locWireBasedIterator->second;
650 int locCharge = (locTrackWireBased->
charge() > 0.0) ? 1 : -1;
651 double locTheta = locTrackWireBased->
momentum().Theta()*180.0/TMath::Pi();
652 double locP = locTrackWireBased->
momentum().Mag();
655 set<int> locCDCRings;
657 for(set<int>::iterator locIterator = locCDCRings.begin(); locIterator != locCDCRings.end(); ++locIterator)
660 set<int> locFDCPlanes;
662 for(set<int>::iterator locIterator = locFDCPlanes.begin(); locIterator != locFDCPlanes.end(); ++locIterator)
669 map<JObject::oid_t, const DTrackTimeBased*>::iterator locTimeBasedIterator = locBestTrackTimeBasedMap.begin();
670 for(; locTimeBasedIterator != locBestTrackTimeBasedMap.end(); ++locTimeBasedIterator)
672 const DTrackTimeBased* locTrackTimeBased = locTimeBasedIterator->second;
673 int locCharge = (locTrackTimeBased->
charge() > 0.0) ? 1 : -1;
674 double locTheta = locTrackTimeBased->
momentum().Theta()*180.0/TMath::Pi();
675 double locP = locTrackTimeBased->
momentum().Mag();
677 double locTrackHitFraction = (locTrackTimeBased->
Ndof + 5)/(
double)locPossibleHits;
693 set<int> locCDCRings;
695 for(set<int>::iterator locIterator = locCDCRings.begin(); locIterator != locCDCRings.end(); ++locIterator)
703 set<int> locFDCPlanes;
705 for(set<int>::iterator locIterator = locFDCPlanes.begin(); locIterator != locFDCPlanes.end(); ++locIterator)
721 auto locSCIterator = locTimeBasedToBestSCMatchMap.find(locTrackTimeBased);
722 if(locSCIterator != locTimeBasedToBestSCMatchMap.end())
724 auto& locSCHitMatchParams = locSCIterator->second;
725 double locPropagatedSCTime = locSCHitMatchParams->dHitTime - locSCHitMatchParams->dFlightTime + (
dTargetCenter.Z() - locTrackTimeBased->
z())/29.9792458;
726 double locDeltaT = locPropagatedSCTime - locEventRFBunch->
dTime;
732 locWireBasedIterator = locBestTrackWireBasedMap.begin();
733 for(; locWireBasedIterator != locBestTrackWireBasedMap.end(); ++locWireBasedIterator)
735 if(locDetectorMatches_WireBased == NULL)
737 const DTrackWireBased* locTrackWireBased = locWireBasedIterator->second;
743 int locCharge = (locTrackWireBased->
charge() > 0.0) ? 1 : -1;
744 double locTheta = locTrackWireBased->
momentum().Theta()*180.0/TMath::Pi();
745 double locP = locTrackWireBased->
momentum().Mag();
747 map<const DTrackWireBased*, const DTrackTimeBased*>::iterator locReconIterator = locWireToTimeBasedTrackMap.find(locTrackWireBased);
748 if(locReconIterator == locWireToTimeBasedTrackMap.end())
762 for(
size_t loc_i = 0; loc_i < locMCThrowns.size(); ++loc_i)
764 if(fabs(locMCThrowns[loc_i]->charge()) < 0.9)
768 const DChargedTrackHypothesis* locChargedTrackHypothesis = locMCThrownMatchingVector[0]->Get_MatchingChargedHypothesis(locMCThrowns[loc_i], locMatchFOM);
769 if(locChargedTrackHypothesis == NULL)
790 string locHistName, locHistTitle;
792 bool locIsRESTEvent = locEventLoop->GetJEvent().GetStatusBit(
kSTATUS_REST);
794 map<string, double> tofparms;
795 locEventLoop->GetCalib(
"TOF/tof_parms", tofparms);
799 japp->RootWriteLock();
808 for(
unsigned int locDummy = 0; locDummy < 2; ++locDummy)
810 bool locIsTimeBased = (locDummy == 0);
811 if(locIsRESTEvent && (!locIsTimeBased))
814 string locDirectoryName = locIsTimeBased ?
"TimeBased" :
"WireBased";
816 string locTrackString = locIsTimeBased ?
"Time-Based Tracks" :
"Wire-Based Tracks";
819 vector<DetectorSystem_t> locDetectorSystems;
821 locDetectorSystems.push_back(
SYS_TOF); locDetectorSystems.push_back(
SYS_FCAL);
822 for(
size_t loc_i = 0; loc_i < locDetectorSystems.size(); ++loc_i)
830 if(locSystemName ==
"ST")
831 locSystemName =
"SC";
832 string locDirName = locSystemName;
833 if(locSystemName ==
"TOF")
834 locDirName =
"TOFPoint";
839 locHistName =
"PVsTheta_HasHit";
840 locHistTitle = locTrackString +
string(
", Has Other Match, ") + locSystemName +
string(
" Has Hit;#theta#circ;p (GeV/c)");
844 locHistName =
"PVsTheta_NoHit";
845 locHistTitle = locTrackString +
string(
", Has Other Match, ") + locSystemName +
string(
" No Hit;#theta#circ;p (GeV/c)");
849 locHistName =
"PhiVsTheta_HasHit";
850 locHistTitle = locTrackString +
string(
", Has Other Match, ") + locSystemName +
string(
" Has Hit;#theta#circ;#phi#circ");
854 locHistName =
"PhiVsTheta_NoHit";
855 locHistTitle = locTrackString +
string(
", Has Other Match, ") + locSystemName +
string(
" No Hit;#theta#circ;#phi#circ");
858 gDirectory->cd(
"..");
863 locHistName =
"SCPaddleVsTheta_HasHit";
864 locHistTitle = locTrackString +
string(
", Has Other Match, SC Has Hit;#theta#circ;Projected SC Paddle");
867 locHistName =
"SCPaddleVsTheta_NoHit";
868 locHistTitle = locTrackString +
string(
", Has Other Match, SC No Hit;#theta#circ;Projected SC Paddle");
871 locHistName =
"SCPaddleVsZ_HasHit";
872 locHistTitle = locTrackString +
string(
", Has Other Match, SC Has Hit;Projected SC Hit-Z (cm);Projected SC Paddle");
875 locHistName =
"SCPaddleVsZ_NoHit";
876 locHistTitle = locTrackString +
string(
", Has Other Match, SC No Hit;Projected SC Hit-Z (cm);Projected SC Paddle");
879 locHistName =
"SCPaddle_BarrelRegion_HasHit";
880 locHistTitle = locTrackString +
string(
", Has Other Match, SC Barrel Region Has Hit;Projected SC Paddle");
883 locHistName =
"SCPaddle_BarrelRegion_NoHit";
884 locHistTitle = locTrackString +
string(
", Has Other Match, SC Barrel Region No Hit;Projected SC Paddle");
887 locHistName =
"SCPaddle_NoseRegion_HasHit";
888 locHistTitle = locTrackString +
string(
", Has Other Match, SC Front Region Has Hit;Projected SC Paddle");
891 locHistName =
"SCPaddle_NoseRegion_NoHit";
892 locHistTitle = locTrackString +
string(
", Has Other Match, SC Front Region No Hit;Projected SC Paddle");
895 locHistName =
"SCTrackDeltaPhiVsP";
896 locHistTitle = locTrackString +
string(
";p (GeV/c);SC / Track #Delta#phi#circ");
899 locHistName =
"SCTrackDeltaPhiVsTheta";
900 locHistTitle = locTrackString +
string(
";#theta#circ;SC / Track #Delta#phi#circ");
903 locHistName =
"SCTrackDeltaPhiVsZ";
904 locHistTitle = locTrackString +
string(
";Projected SC Hit-Z (cm);SC / Track #Delta#phi#circ");
906 gDirectory->cd(
"..");
910 locHistName =
"VerticalPaddleTrackDeltaX";
911 locHistTitle = locTrackString +
string(
";Vertical TOF Paddle / Track |#DeltaX| (cm)");
914 locHistName =
"HorizontalPaddleTrackDeltaY";
915 locHistTitle = locTrackString +
string(
";Horizontal TOF Paddle / Track |#DeltaY| (cm)");
918 locHistName =
"TrackYVsVerticalPaddle_HasHit";
919 locHistTitle = locTrackString +
string(
", Has Other Match, TOF Paddle Has Hit;Projected Vertical Paddle;Projected TOF Hit Y (cm)");
922 locHistName =
"TrackYVsVerticalPaddle_NoHit";
923 locHistTitle = locTrackString +
string(
", Has Other Match, TOF Paddle No Hit;Projected Vertical Paddle;Projected TOF Hit Y (cm)");
926 locHistName =
"HorizontalPaddleVsTrackX_HasHit";
927 locHistTitle = locTrackString +
string(
", Has Other Match, TOF Paddle Has Hit;Projected TOF Hit X (cm);Projected Horizontal Paddle");
930 locHistName =
"HorizontalPaddleVsTrackX_NoHit";
931 locHistTitle = locTrackString +
string(
", Has Other Match, TOF Paddle No Hit;Projected TOF Hit X (cm);Projected Horizontal Paddle");
933 gDirectory->cd(
"..");
937 locHistName =
"TrackTOFYVsX_HasHit";
938 locHistTitle = locTrackString +
string(
", Has Other Match, TOF Has Hit;Projected TOF Hit X (cm);Projected TOF Hit Y (cm)");
941 locHistName =
"TrackTOFYVsX_NoHit";
942 locHistTitle = locTrackString +
string(
", Has Other Match, TOF No Hit;Projected TOF Hit X (cm);Projected TOF Hit Y (cm)");
945 locHistName =
"TrackTOF2DPaddles_HasHit";
946 locHistTitle = locTrackString +
string(
", Has Other Match, TOF Has Hit;Projected Vertical TOF Paddle;Projected Horizontal TOF Paddle");
949 locHistName =
"TrackTOF2DPaddles_NoHit";
950 locHistTitle = locTrackString +
string(
", Has Other Match, TOF No Hit;Projected Vertical TOF Paddle;Projected Horizontal TOF Paddle");
953 locHistName =
"TrackTOFP_HasHit";
954 locHistTitle = locTrackString +
string(
", Has Other Match, TOF Has Hit;p (GeV/c)");
957 locHistName =
"TrackTOFP_NoHit";
958 locHistTitle = locTrackString +
string(
", Has Other Match, TOF No Hit;p (GeV/c)");
961 locHistName =
"TrackTOFR_HasHit";
962 locHistTitle = locTrackString +
string(
", Has Other Match, TOF Has Hit;Projected TOF Hit R (cm)");
965 locHistName =
"TrackTOFR_NoHit";
966 locHistTitle = locTrackString +
string(
", Has Other Match, TOF No Hit;Projected TOF Hit R (cm)");
969 locHistName =
"TOFTrackDistanceVsP";
970 locHistTitle = locTrackString +
string(
";p (GeV/c);TOF / Track Distance (cm)");
973 locHistName =
"TOFTrackDistanceVsTheta";
974 locHistTitle = locTrackString +
string(
";#theta#circ;TOF / Track Distance (cm)");
977 locHistName =
"TOFTrackDeltaXVsHorizontalPaddle";
978 locHistTitle = locTrackString +
string(
";TOF Horizontal Paddle;TOF / Track #DeltaX (cm)");
981 locHistName =
"TOFTrackDeltaXVsVerticalPaddle";
982 locHistTitle = locTrackString +
string(
";TOF Vertical Paddle;TOF / Track #DeltaX (cm)");
985 locHistName =
"TOFTrackDeltaYVsHorizontalPaddle";
986 locHistTitle = locTrackString +
string(
";TOF Horizontal Paddle;TOF / Track #DeltaY (cm)");
989 locHistName =
"TOFTrackDeltaYVsVerticalPaddle";
990 locHistTitle = locTrackString +
string(
";TOF Vertical Paddle;TOF / Track #DeltaY (cm)");
993 locHistName =
"TOFTrackDistance_BothPlanes";
994 locHistTitle = locTrackString +
string(
"TOF Hit in Both Planes;TOF / Track Distance (cm)");
997 locHistName =
"TOFTrackDistance_OnePlane";
998 locHistTitle = locTrackString +
string(
"TOF Hit in One Plane;TOF / Track Distance (cm)");
1000 gDirectory->cd(
"..");
1004 locHistName =
"TrackFCALYVsX_HasHit";
1005 locHistTitle = locTrackString +
string(
", Has Other Match, FCAL Has Hit;Projected FCAL Hit X (cm);Projected FCAL Hit Y (cm)");
1008 locHistName =
"TrackFCALYVsX_NoHit";
1009 locHistTitle = locTrackString +
string(
", Has Other Match, FCAL No Hit;Projected FCAL Hit X (cm);Projected FCAL Hit Y (cm)");
1012 locHistName =
"TrackFCALP_HasHit";
1013 locHistTitle = locTrackString +
string(
", Has Other Match, FCAL Has Hit;p (GeV/c)");
1016 locHistName =
"TrackFCALP_NoHit";
1017 locHistTitle = locTrackString +
string(
", Has Other Match, FCAL No Hit;p (GeV/c)");
1020 locHistName =
"TrackFCALR_HasHit";
1021 locHistTitle = locTrackString +
string(
", Has Other Match, FCAL Has Hit;Projected FCAL Hit R (cm)");
1024 locHistName =
"TrackFCALR_NoHit";
1025 locHistTitle = locTrackString +
string(
", Has Other Match, FCAL No Hit;Projected FCAL Hit R (cm)");
1028 locHistName =
"TrackFCALRowVsColumn_HasHit";
1029 locHistTitle = locTrackString +
string(
", Has Other Match, FCAL Has Hit;Projected FCAL Hit Column;Projected FCAL Hit Row");
1032 locHistName =
"TrackFCALRowVsColumn_NoHit";
1033 locHistTitle = locTrackString +
string(
", Has Other Match, FCAL No Hit;Projected FCAL Hit Column;Projected FCAL Hit Row");
1036 locHistName =
"FCALTrackDistanceVsP";
1037 locHistTitle = locTrackString +
string(
";p (GeV/c);FCAL / Track Distance (cm)");
1040 locHistName =
"FCALTrackDistanceVsTheta";
1041 locHistTitle = locTrackString +
string(
";#theta#circ;FCAL / Track Distance (cm)");
1043 gDirectory->cd(
"..");
1047 locHistName =
"TrackBCALModuleVsZ_HasHit";
1048 locHistTitle = locTrackString +
string(
", Has Other Match, BCAL Has Hit;Projected BCAL Hit Z (cm);Projected BCAL Hit Module");
1051 locHistName =
"TrackBCALModuleVsZ_NoHit";
1052 locHistTitle = locTrackString +
string(
", Has Other Match, BCAL No Hit;Projected BCAL Hit Z (cm);Projected BCAL Hit Module");
1055 locHistName =
"TrackBCALPhiVsZ_HasHit";
1056 locHistTitle = locTrackString +
string(
", Has Other Match, BCAL Has Hit;Projected BCAL Hit Z (cm);Projected BCAL Hit #phi#circ");
1059 locHistName =
"TrackBCALPhiVsZ_NoHit";
1060 locHistTitle = locTrackString +
string(
", Has Other Match, BCAL No Hit;Projected BCAL Hit Z (cm);Projected BCAL Hit #phi#circ");
1063 locHistName =
"BCALDeltaPhiVsP";
1064 locHistTitle = locTrackString +
string(
";p (GeV/c);BCAL / Track #Delta#phi#circ");
1067 locHistName =
"BCALDeltaPhiVsZ";
1068 locHistTitle = locTrackString +
string(
";Projected BCAL Hit-Z (cm);BCAL / Track #Delta#phi#circ");
1071 locHistName =
"BCALDeltaZVsTheta";
1072 locHistTitle = locTrackString +
string(
";#theta#circ;BCAL / Track #Deltaz (cm)");
1075 locHistName =
"BCALDeltaZVsZ";
1076 locHistTitle = locTrackString +
string(
";Projected BCAL Hit-Z (cm);BCAL / Track #Deltaz (cm)");
1078 gDirectory->cd(
"..");
1081 locHistName =
"PVsTheta_NoHitMatch";
1082 locHistTitle = locTrackString +
string(
", No Hit Match;#theta#circ;p (GeV/c)");
1085 locHistName =
"PVsTheta_HitMatch";
1086 locHistTitle = locTrackString +
string(
", Hit Match;#theta#circ;p (GeV/c)");
1089 gDirectory->cd(
"..");
1105 bool locIsRESTEvent = locEventLoop->GetJEvent().GetStatusBit(
kSTATUS_REST);
1117 locEventLoop->GetSingle(locParticleID);
1121 locCutAction_TrackHitPattern.
Initialize(locEventLoop);
1124 map<JObject::oid_t, const DTrackingData*> locBestTrackMap;
1127 vector<const DTrackTimeBased*> locTrackTimeBasedVector;
1128 locEventLoop->Get(locTrackTimeBasedVector);
1131 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
1135 if(!locCutAction_TrackHitPattern.
Cut_TrackHitPattern(locParticleID, locTrackTimeBasedVector[loc_i]))
1137 JObject::oid_t locCandidateID = locTrackTimeBasedVector[loc_i]->candidateid;
1138 if(locBestTrackMap.find(locCandidateID) == locBestTrackMap.end())
1139 locBestTrackMap[locCandidateID] = locTrackTimeBasedVector[loc_i];
1140 else if(locTrackTimeBasedVector[loc_i]->FOM > (dynamic_cast<const DTrackTimeBased*>(locBestTrackMap[locCandidateID]))->FOM)
1141 locBestTrackMap[locCandidateID] = locTrackTimeBasedVector[loc_i];
1146 vector<const DTrackWireBased*> locTrackWireBasedVector;
1147 locEventLoop->Get(locTrackWireBasedVector);
1150 for(
size_t loc_i = 0; loc_i < locTrackWireBasedVector.size(); ++loc_i)
1154 if(!locCutAction_TrackHitPattern.
Cut_TrackHitPattern(locParticleID, locTrackWireBasedVector[loc_i]))
1156 JObject::oid_t locCandidateID = locTrackWireBasedVector[loc_i]->candidateid;
1157 if(locBestTrackMap.find(locCandidateID) == locBestTrackMap.end())
1158 locBestTrackMap[locCandidateID] = locTrackWireBasedVector[loc_i];
1159 else if(locTrackWireBasedVector[loc_i]->FOM > (dynamic_cast<const DTrackWireBased*>(locBestTrackMap[locCandidateID]))->FOM)
1160 locBestTrackMap[locCandidateID] = locTrackWireBasedVector[loc_i];
1164 vector<const DBCALShower*> locBCALShowers;
1165 locEventLoop->Get(locBCALShowers);
1167 vector<const DFCALShower*> locFCALShowers;
1168 locEventLoop->Get(locFCALShowers);
1170 vector<const DTOFPoint*> locTOFPoints;
1171 locEventLoop->Get(locTOFPoints);
1173 vector<const DTOFPaddleHit*> locTOFPaddleHits;
1174 locEventLoop->Get(locTOFPaddleHits);
1176 vector<const DSCHit*> locSCHits;
1177 locEventLoop->Get(locSCHits);
1180 locEventLoop->GetSingle(locEventRFBunch);
1182 string locDetectorMatchesTag = locIsTimeBased ?
"" :
"WireBased";
1184 locEventLoop->GetSingle(locDetectorMatches, locDetectorMatchesTag.c_str());
1187 map<const DTrackingData*, pair<shared_ptr<const DBCALShowerMatchParams>,
double> > locBCALTrackDistanceMap;
1188 for(
auto locTrackIterator = locBestTrackMap.begin(); locTrackIterator != locBestTrackMap.end(); ++locTrackIterator)
1190 map<DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >extrapolations;
1193 if(extrapolations.size()==0)
1196 double locStartTime = locTrackIterator->second->t0();
1197 double locStartTimeVariance = 0.0;
1200 shared_ptr<const DBCALShowerMatchParams> locBestMatchParams;
1201 if(locParticleID->
Get_ClosestToTrack(extrapolations.at(
SYS_BCAL), locBCALShowers,
false, locStartTime, locBestMatchParams, &locStartTimeVariance, &locProjPos, &locProjMom))
1202 locBCALTrackDistanceMap[locTrackIterator->second] = std::make_pair(locBestMatchParams, locProjPos.Z());
1206 map<const DTrackingData*, shared_ptr<const DFCALShowerMatchParams>> locFCALTrackDistanceMap;
1207 for(
auto locTrackIterator = locBestTrackMap.begin(); locTrackIterator != locBestTrackMap.end(); ++locTrackIterator)
1209 map<DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >extrapolations;
1212 if(extrapolations.size()==0)
1215 double locStartTime = locTrackIterator->second->t0();
1216 shared_ptr<const DFCALShowerMatchParams> locBestMatchParams;
1218 locFCALTrackDistanceMap.emplace(locTrackIterator->second, locBestMatchParams);
1222 map<const DTrackingData*, pair<shared_ptr<const DSCHitMatchParams>,
double> > locSCTrackDistanceMap;
1223 for(
auto locTrackIterator = locBestTrackMap.begin(); locTrackIterator != locBestTrackMap.end(); ++locTrackIterator)
1225 map<DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >extrapolations;
1228 if(extrapolations.size()==0)
1231 double locStartTime = locTrackIterator->second->t0();
1232 double locStartTimeVariance = 0.0;
1235 shared_ptr<const DSCHitMatchParams> locBestMatchParams;
1236 if(locParticleID->
Get_ClosestToTrack(extrapolations.at(
SYS_START), locSCHits, locIsTimeBased,
false, locStartTime, locBestMatchParams, &locStartTimeVariance, &locProjPos, &locProjMom))
1237 locSCTrackDistanceMap[locTrackIterator->second] = std::make_pair(locBestMatchParams, locProjPos.Z());
1241 map<const DTrackingData*, shared_ptr<const DTOFHitMatchParams>> locTOFPointTrackDistanceMap;
1242 for(
auto locTrackIterator = locBestTrackMap.begin(); locTrackIterator != locBestTrackMap.end(); ++locTrackIterator)
1244 map<DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >extrapolations;
1247 if(extrapolations.size()==0)
1250 double locStartTime = locTrackIterator->second->t0();
1251 shared_ptr<const DTOFHitMatchParams> locBestMatchParams;
1252 if(locParticleID->
Get_ClosestToTrack(extrapolations.at(
SYS_TOF), locTOFPoints,
false, locStartTime, locBestMatchParams))
1253 locTOFPointTrackDistanceMap.emplace(locTrackIterator->second, locBestMatchParams);
1257 map<const DTrackingData*, pair<const DTOFPaddleHit*, pair<double, double> > > locHorizontalTOFPaddleTrackDistanceMap;
1258 map<const DTrackingData*, pair<const DTOFPaddleHit*, pair<double, double> > > locVerticalTOFPaddleTrackDistanceMap;
1259 for(
auto locTrackIterator = locBestTrackMap.begin(); locTrackIterator != locBestTrackMap.end(); ++locTrackIterator)
1261 const DKinematicData* locKinematicData = locTrackIterator->second;
1262 map<DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >extrapolations;
1265 if(extrapolations.size()==0)
1268 double locBestDeltaX = 999.9, locBestDeltaY = 999.9, locBestDistance_Vertical = 999.9, locBestDistance_Horizontal = 999.9;
1272 pair<double, double> locDistancePair_Vertical(locBestDeltaX, locBestDistance_Vertical);
1273 if(locClosestTOFPaddleHit_Vertical != NULL)
1274 locVerticalTOFPaddleTrackDistanceMap[locTrackIterator->second] = pair<const DTOFPaddleHit*, pair<double, double> >(locClosestTOFPaddleHit_Vertical, locDistancePair_Vertical);
1277 pair<double, double> locDistancePair_Horizontal(locBestDeltaY, locBestDistance_Horizontal);
1278 if(locClosestTOFPaddleHit_Horizontal != NULL)
1279 locHorizontalTOFPaddleTrackDistanceMap[locTrackIterator->second] = pair<const DTOFPaddleHit*, pair<double, double> >(locClosestTOFPaddleHit_Horizontal, locDistancePair_Horizontal);
1283 map<const DTrackingData*, pair<int, bool> > locProjectedSCPaddleMap;
1284 map<const DTrackingData*, pair<int, int> > locProjectedTOF2DPaddlesMap;
1285 map<const DTrackingData*, pair<float, float> > locProjectedTOFXYMap;
1286 map<const DTrackingData*, pair<int, int> > locProjectedFCALRowColumnMap;
1287 map<const DTrackingData*, pair<float, float> > locProjectedFCALXYMap;
1288 map<const DTrackingData*, pair<float, int> > locProjectedBCALModuleSectorMap;
1289 map<const DTrackingData*, pair<float, float> > locProjectedBCALPhiZMap;
1290 for(
auto locTrackIterator = locBestTrackMap.begin(); locTrackIterator != locBestTrackMap.end(); ++locTrackIterator)
1293 map<DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >extrapolations;
1296 if(extrapolations.size()==0)
1301 bool locProjBarrelFlag =
false;
1302 unsigned int locProjectedSCPaddle = locParticleID->
PredictSCSector(extrapolations.at(
SYS_START), &locSCIntersection, &locProjBarrelFlag);
1303 if(locProjectedSCPaddle != 0)
1304 locProjectedSCPaddleMap[locTrack] = pair<int, bool>(locProjectedSCPaddle, locProjBarrelFlag);
1308 unsigned int locHorizontalBar = 0, locVerticalBar = 0;
1309 if(locParticleID->
PredictTOFPaddles(extrapolations.at(
SYS_TOF), locHorizontalBar, locVerticalBar, &locTOFIntersection))
1311 locProjectedTOF2DPaddlesMap[locTrack] = pair<int, int>(locVerticalBar, locHorizontalBar);
1312 locProjectedTOFXYMap[locTrack] = pair<float, float>(locTOFIntersection.X(), locTOFIntersection.Y());
1317 unsigned int locRow = 0, locColumn = 0;
1320 locProjectedFCALRowColumnMap[locTrack] = pair<int, int>(locColumn, locRow);
1321 locProjectedFCALXYMap[locTrack] = pair<float, float>(locFCALIntersection.X(), locFCALIntersection.Y());
1326 unsigned int locModule = 0, locSector = 0;
1329 locProjectedBCALModuleSectorMap[locTrack] = pair<float, int>(locBCALIntersection.Z(), locModule);
1330 locProjectedBCALPhiZMap[locTrack] = pair<float, float>(locBCALIntersection.Z(), locBCALIntersection.Phi()*180.0/TMath::Pi());
1342 for(
auto locMapPair : locBCALTrackDistanceMap)
1344 auto locTrack = locMapPair.first;
1345 auto locMatchParams = locMapPair.second.first;
1346 double locDeltaPhi = locMatchParams->dDeltaPhiToShower*180.0/TMath::Pi();
1347 double locProjectedZ = locMapPair.second.second;
1349 dHistMap_BCALDeltaZVsTheta[locIsTimeBased]->Fill(locTrack->momentum().Theta()*180.0/TMath::Pi(), locMatchParams->dDeltaZToShower);
1356 for(
auto locMapPair : locFCALTrackDistanceMap)
1358 auto locTrack = locMapPair.first;
1365 auto locTOFPaddleIterator = locHorizontalTOFPaddleTrackDistanceMap.begin();
1366 for(; locTOFPaddleIterator != locHorizontalTOFPaddleTrackDistanceMap.end(); ++locTOFPaddleIterator)
1368 double locDeltaY = locTOFPaddleIterator->second.second.first;
1372 locTOFPaddleIterator = locVerticalTOFPaddleTrackDistanceMap.begin();
1373 for(; locTOFPaddleIterator != locVerticalTOFPaddleTrackDistanceMap.end(); ++locTOFPaddleIterator)
1375 double locDeltaX = locTOFPaddleIterator->second.second.first;
1380 for(
auto locMapPair : locTOFPointTrackDistanceMap)
1382 auto locTrack = locMapPair.first;
1383 const DTOFPoint* locTOFPoint = locMapPair.second->dTOFPoint;
1384 double locDeltaX = locMapPair.second->dDeltaXToHit;
1385 double locDeltaY = locMapPair.second->dDeltaYToHit;
1387 double locDistance =
sqrt(locDeltaX*locDeltaX + locDeltaY*locDeltaY);
1388 if((fabs(locDeltaX) < 500.0) && (fabs(locDeltaY) < 500.0))
1406 if(locSCHits.size() <= 4)
1408 for(
auto locMapPair : locSCTrackDistanceMap)
1410 auto locTrack = locMapPair.first;
1411 auto locMatchParams = locMapPair.second.first;
1412 double locDeltaPhi = locMatchParams->dDeltaPhiToHit*180.0/TMath::Pi();
1413 double locProjectedZ = locMapPair.second.second;
1423 for(
auto locMapPair : locBestTrackMap)
1425 auto locTrack = locMapPair.second;
1426 double locTheta = locTrack->momentum().Theta()*180.0/TMath::Pi();
1427 double locPhi = locTrack->momentum().Phi()*180.0/TMath::Pi();
1428 double locP = locTrack->momentum().Mag();
1437 if(locProjectedBCALModuleSectorMap.find(locTrack) != locProjectedBCALModuleSectorMap.end())
1439 pair<float, float>& locPositionPair = locProjectedBCALPhiZMap[locTrack];
1441 pair<float, int>& locElementPair = locProjectedBCALModuleSectorMap[locTrack];
1449 if(locProjectedBCALModuleSectorMap.find(locTrack) != locProjectedBCALModuleSectorMap.end())
1451 pair<float, float>& locPositionPair = locProjectedBCALPhiZMap[locTrack];
1453 pair<float, int>& locElementPair = locProjectedBCALModuleSectorMap[locTrack];
1465 if(locProjectedFCALRowColumnMap.find(locTrack) != locProjectedFCALRowColumnMap.end())
1470 pair<float, float>& locPositionPair = locProjectedFCALXYMap[locTrack];
1472 float locFCALR =
sqrt(locPositionPair.first*locPositionPair.first + locPositionPair.second*locPositionPair.second);
1474 pair<int, int>& locElementPair = locProjectedFCALRowColumnMap[locTrack];
1484 if(locProjectedFCALRowColumnMap.find(locTrack) != locProjectedFCALRowColumnMap.end())
1489 pair<float, float>& locPositionPair = locProjectedFCALXYMap[locTrack];
1491 float locFCALR =
sqrt(locPositionPair.first*locPositionPair.first + locPositionPair.second*locPositionPair.second);
1493 pair<int, int>& locElementPair = locProjectedFCALRowColumnMap[locTrack];
1500 if((locP > 1.0) && (locProjectedTOFXYMap.find(locTrack) != locProjectedTOFXYMap.end()))
1502 pair<float, float>& locPositionPair = locProjectedTOFXYMap[locTrack];
1503 pair<int, int>& locPaddlePair = locProjectedTOF2DPaddlesMap[locTrack];
1506 if(locHorizontalTOFPaddleTrackDistanceMap.find(locTrack) != locHorizontalTOFPaddleTrackDistanceMap.end())
1508 auto& locMatch = locHorizontalTOFPaddleTrackDistanceMap[locTrack];
1511 double locDistance = locDoubleEndedHitFlag ? locMatch.second.second : locMatch.second.first;
1521 if(locVerticalTOFPaddleTrackDistanceMap.find(locTrack) != locVerticalTOFPaddleTrackDistanceMap.end())
1523 auto& locMatch = locVerticalTOFPaddleTrackDistanceMap[locTrack];
1526 double locDistance = locDoubleEndedHitFlag ? locMatch.second.second : locMatch.second.first;
1542 if(locProjectedTOFXYMap.find(locTrack) != locProjectedTOFXYMap.end())
1547 pair<float, float>& locPositionPair = locProjectedTOFXYMap[locTrack];
1549 float locTOFR =
sqrt(locPositionPair.first*locPositionPair.first + locPositionPair.second*locPositionPair.second);
1551 pair<int, int>& locElementPair = locProjectedTOF2DPaddlesMap[locTrack];
1561 if(locProjectedTOFXYMap.find(locTrack) != locProjectedTOFXYMap.end())
1566 pair<float, float>& locPositionPair = locProjectedTOFXYMap[locTrack];
1568 float locTOFR =
sqrt(locPositionPair.first*locPositionPair.first + locPositionPair.second*locPositionPair.second);
1570 pair<int, int>& locElementPair = locProjectedTOF2DPaddlesMap[locTrack];
1583 if(locProjectedSCPaddleMap.find(locTrack) != locProjectedSCPaddleMap.end())
1586 if(locProjectedSCPaddleMap[locTrack].second)
1590 if(locSCTrackDistanceMap.find(locTrack) != locSCTrackDistanceMap.end())
1592 double locProjectedZ = locSCTrackDistanceMap[locTrack].second;
1601 if(locProjectedSCPaddleMap.find(locTrack) != locProjectedSCPaddleMap.end())
1604 if(locProjectedSCPaddleMap[locTrack].second)
1608 if(locSCTrackDistanceMap.find(locTrack) != locSCTrackDistanceMap.end())
1610 double locProjectedZ = locSCTrackDistanceMap[locTrack].second;
1619 for(
auto locMapPair : locBestTrackMap)
1621 auto locTrack = locMapPair.second;
1622 double locTheta = locTrack->momentum().Theta()*180.0/TMath::Pi();
1623 double locP = locTrack->momentum().Mag();
1641 string locHistName, locHistTitle, locParticleROOTName;
1643 string locTrackSelectionTag =
"NotATag", locShowerSelectionTag =
"NotATag";
1644 if(gPARMS->Exists(
"COMBO:TRACK_SELECT_TAG"))
1645 gPARMS->GetParameter(
"COMBO:TRACK_SELECT_TAG", locTrackSelectionTag);
1646 if(gPARMS->Exists(
"COMBO:SHOWER_SELECT_TAG"))
1647 gPARMS->GetParameter(
"COMBO:SHOWER_SELECT_TAG", locShowerSelectionTag);
1651 japp->RootWriteLock();
1657 dTrackSelectionTag = (locTrackSelectionTag ==
"NotATag") ?
"PreSelect" : locTrackSelectionTag;
1659 dShowerSelectionTag = (locShowerSelectionTag ==
"NotATag") ?
"PreSelect" : locShowerSelectionTag;
1670 locHistName =
"BetaVsP_q0";
1671 locHistTitle =
"BCAL q^{0};Shower Energy (GeV);#beta";
1674 locHistName =
"DeltaTVsShowerE_Photon";
1675 locHistTitle =
string(
"BCAL q^{0}") + locParticleROOTName +
string(
";Shower Energy (GeV);#Deltat_{BCAL - RF}");
1688 gDirectory->cd(
"..");
1693 locHistName =
"BetaVsP_q0";
1694 locHistTitle =
"FCAL q^{0};Shower Energy (GeV);#beta";
1697 locHistName =
"DeltaTVsShowerE_Photon";
1698 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";Shower Energy (GeV);#Deltat_{FCAL - RF}");
1711 gDirectory->cd(
"..");
1714 for(
int locCharge = -1; locCharge <= 1; locCharge += 2)
1716 string locParticleName = (locCharge == -1) ?
"q-" :
"q+";
1717 string locParticleROOTName = (locCharge == -1) ?
"q^{-}" :
"q^{+}";
1722 locHistName =
string(
"dEdXVsP_") + locParticleName;
1723 locHistTitle = locParticleROOTName +
";p (GeV/c);SC dE/dX (MeV/cm)";
1726 locHistName =
string(
"BetaVsP_") + locParticleName;
1727 locHistTitle =
string(
"SC ") + locParticleROOTName +
string(
";p (GeV/c);#beta");
1730 gDirectory->cd(
"..");
1735 locHistName =
string(
"dEdXVsP_") + locParticleName;
1736 locHistTitle = locParticleROOTName +
";p (GeV/c);TOF dE/dX (MeV/cm)";
1739 locHistName =
string(
"BetaVsP_") + locParticleName;
1740 locHistTitle =
string(
"TOF ") + locParticleROOTName +
string(
";p (GeV/c);#beta");
1743 gDirectory->cd(
"..");
1748 locHistName =
string(
"BetaVsP_") + locParticleName;
1749 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
";p (GeV/c);#beta");
1752 locHistName =
string(
"EOverPVsP_") + locParticleName;
1753 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
";p (GeV/c);E_{Shower}/p_{Track} (c);");
1756 locHistName =
string(
"EOverPVsTheta_") + locParticleName;
1757 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
";#theta#circ;E_{Shower}/p_{Track} (c);");
1760 gDirectory->cd(
"..");
1765 locHistName =
string(
"BetaVsP_") + locParticleName;
1766 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";p (GeV/c);#beta");
1769 locHistName =
string(
"EOverPVsP_") + locParticleName;
1770 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";p (GeV/c);E_{Shower}/p_{Track} (c);");
1773 locHistName =
string(
"EOverPVsTheta_") + locParticleName;
1774 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";#theta#circ;E_{Shower}/p_{Track} (c);");
1777 gDirectory->cd(
"..");
1782 locHistName =
string(
"dEdXVsP_Int_") + locParticleName;
1783 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);CDC dE/dx [Integral-based] (keV/cm)");
1785 locHistName =
string(
"dEdXVsP_Amp_") + locParticleName;
1786 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);CDC dE/dx [Amplitude-based] (keV/cm)");
1789 gDirectory->cd(
"..");
1794 locHistName =
string(
"dEdXVsP_") + locParticleName;
1795 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);FDC dE/dx (keV/cm)");
1798 gDirectory->cd(
"..");
1811 locHistName =
string(
"DeltadEdXVsP_") + locParticleName;
1812 locHistTitle = locParticleROOTName +
" Candidates;p (GeV/c);SC #Delta(dE/dX) (MeV/cm)";
1815 locHistName =
string(
"DeltaBetaVsP_") + locParticleName;
1816 locHistTitle =
string(
"SC ") + locParticleROOTName +
string(
" Candidates;p (GeV/c);#Delta#beta");
1819 locHistName =
string(
"DeltaTVsP_") + locParticleName;
1820 locHistTitle =
string(
"SC ") + locParticleROOTName +
string(
" Candidates;p (GeV/c);#Deltat_{SC - RF}");
1833 gDirectory->cd(
"..");
1838 locHistName =
string(
"DeltadEdXVsP_") + locParticleName;
1839 locHistTitle = locParticleROOTName +
" Candidates;p (GeV/c);TOF #Delta(dE/dX) (MeV/cm)";
1842 locHistName =
string(
"DeltaBetaVsP_") + locParticleName;
1843 locHistTitle =
string(
"TOF ") + locParticleROOTName +
string(
" Candidates;p (GeV/c);#Delta#beta");
1846 locHistName =
string(
"DeltaTVsP_") + locParticleName;
1847 locHistTitle =
string(
"TOF ") + locParticleROOTName +
string(
" Candidates;p (GeV/c);#Deltat_{TOF - RF}");
1860 gDirectory->cd(
"..");
1865 locHistName =
string(
"DeltaBetaVsP_") + locParticleName;
1866 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
" Candidates;p (GeV/c);#Delta#beta");
1869 locHistName =
string(
"DeltaTVsP_") + locParticleName;
1870 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
" Candidates;p (GeV/c);#Deltat_{BCAL - RF}");
1883 gDirectory->cd(
"..");
1888 locHistName =
string(
"DeltaBetaVsP_") + locParticleName;
1889 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
" Candidates;p (GeV/c);#Delta#beta");
1892 locHistName =
string(
"DeltaTVsP_") + locParticleName;
1893 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
" Candidates;p (GeV/c);#Deltat_{FCAL - RF}");
1906 gDirectory->cd(
"..");
1911 locHistName =
string(
"DeltadEdXVsP_Int_") + locParticleName;
1912 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);CDC #Delta(dE/dX) [Integral-based] (keV/cm)");
1915 locHistName =
string(
"DeltadEdXVsP_Amp_") + locParticleName;
1916 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);CDC #Delta(dE/dX) [Amplitude-based] (keV/cm)");
1929 gDirectory->cd(
"..");
1934 locHistName =
string(
"DeltadEdXVsP_") + locParticleName;
1935 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);FDC #Delta(dE/dX) (keV/cm)");
1948 gDirectory->cd(
"..");
1953 locHistName =
string(
"NumPhotons_") + locParticleName;
1954 locHistTitle = locParticleROOTName +
string(
"; DIRC NumPhotons");
1957 locHistName =
string(
"ThetaCVsP_") + locParticleName;
1958 locHistTitle = locParticleROOTName +
string(
"; Momentum (GeV); DIRC #theta_{C}");
1961 locHistName =
string(
"Ldiff_kpiVsP_") + locParticleName;
1962 locHistTitle = locParticleROOTName +
string(
"; Momentum (GeV); DIRC L_{K}-L_{#pi}");
1965 locHistName =
string(
"Ldiff_pkVsP_") + locParticleName;
1966 locHistTitle = locParticleROOTName +
string(
"; Momentum (GeV); DIRC L_{p}-L_{K}");
1969 gDirectory->cd(
"..");
1985 vector<const DChargedTrack*> locChargedTracks;
1988 vector<const DNeutralParticle*> locNeutralParticles;
1992 locEventLoop->GetSingle(locDetectorMatches);
1995 locEventLoop->GetSingle(locEventRFBunch);
1998 locEventLoop->GetSingle(locParticleID);
2007 for(
size_t loc_i = 0; loc_i < locNeutralParticles.size(); ++loc_i)
2011 double locBeta_Timing = locNeutralParticleHypothesis->
measuredBeta();
2012 const DNeutralShower* locNeutralShower = locNeutralParticles[loc_i]->dNeutralShower;
2013 double locShowerEnergy = locNeutralShower->
dEnergy;
2015 double locDeltaT = locNeutralParticleHypothesis->
time() - locEventRFBunch->
dTime;
2029 for(
size_t loc_i = 0; loc_i < locChargedTracks.size(); ++loc_i)
2036 double locStartTime = locParticleID->
Calc_PropagatedRFTime(locChargedTrackHypothesis, locEventRFBunch);
2040 double locP = locTrackTimeBased->momentum().Mag();
2041 double locTheta = locTrackTimeBased->momentum().Theta()*180.0/TMath::Pi();
2050 if(locSCHitMatchParams != NULL)
2056 double locBeta_Timing = locSCHitMatchParams->dPathLength/(29.9792458*(locSCHitMatchParams->dHitTime - locChargedTrackHypothesis->
t0()));
2060 double locDeltaBeta = locChargedTrackHypothesis->
lorentzMomentum().Beta() - locBeta_Timing;
2062 double locDeltaT = locSCHitMatchParams->dHitTime - locSCHitMatchParams->dFlightTime - locStartTime;
2068 double locdx = locSCHitMatchParams->dHitEnergy/locSCHitMatchParams->dEdx;
2069 double locProbabledEdx = 0.0, locSigmadEdx = 0.0;
2070 locParticleID->
GetScintMPdEandSigma(locP, locChargedTrackHypothesis->
mass(), locdx, locProbabledEdx, locSigmadEdx);
2074 if(locTOFHitMatchParams != NULL)
2079 double locBeta_Timing = locTOFHitMatchParams->dPathLength/(29.9792458*(locTOFHitMatchParams->dHitTime - locChargedTrackHypothesis->
t0()));
2083 double locDeltaBeta = locChargedTrackHypothesis->
lorentzMomentum().Beta() - locBeta_Timing;
2085 double locDeltaT = locTOFHitMatchParams->dHitTime - locTOFHitMatchParams->dFlightTime - locStartTime;
2091 double locdx = locTOFHitMatchParams->dHitEnergy/locTOFHitMatchParams->dEdx;
2092 double locProbabledEdx = 0.0, locSigmadEdx = 0.0;
2093 locParticleID->
GetScintMPdEandSigma(locP, locChargedTrackHypothesis->
mass(), locdx, locProbabledEdx, locSigmadEdx);
2097 if(locBCALShowerMatchParams != NULL)
2099 const DBCALShower* locBCALShower = locBCALShowerMatchParams->dBCALShower;
2100 double locEOverP = locBCALShower->
E/locP;
2105 double locBeta_Timing = locBCALShowerMatchParams->dPathLength/(29.9792458*(locBCALShower->
t - locChargedTrackHypothesis->
t0()));
2109 double locDeltaBeta = locChargedTrackHypothesis->
lorentzMomentum().Beta() - locBeta_Timing;
2111 double locDeltaT = locBCALShower->
t - locBCALShowerMatchParams->dFlightTime - locStartTime;
2116 if(locFCALShowerMatchParams != NULL)
2118 const DFCALShower* locFCALShower = locFCALShowerMatchParams->dFCALShower;
2119 double locEOverP = locFCALShower->
getEnergy()/locP;
2124 double locBeta_Timing = locFCALShowerMatchParams->dPathLength/(29.9792458*(locFCALShower->
getTime() - locChargedTrackHypothesis->
t0()));
2128 double locDeltaBeta = locChargedTrackHypothesis->
lorentzMomentum().Beta() - locBeta_Timing;
2130 double locDeltaT = locFCALShower->
getTime() - locFCALShowerMatchParams->dFlightTime - locStartTime;
2136 int locNumPhotons_DIRC = locDIRCMatchParams->dNPhotons;
2137 double locThetaC_DIRC = locDIRCMatchParams->dThetaC;
2140 double locLpi_DIRC = locDIRCMatchParams->dLikelihoodPion;
2141 double locLk_DIRC = locDIRCMatchParams->dLikelihoodKaon;
2142 double locLp_DIRC = locDIRCMatchParams->dLikelihoodProton;
2147 if(locTrackTimeBased->dNumHitsUsedFordEdx_CDC > 0)
2153 double locProbabledEdx = locParticleID->
GetMostProbabledEdx_DC(locP, locChargedTrackHypothesis->
mass(), locTrackTimeBased->ddx_CDC,
true);
2158 double locProbabledEdx = locParticleID->
GetMostProbabledEdx_DC(locP, locChargedTrackHypothesis->
mass(), locTrackTimeBased->ddx_CDC_amp,
true);
2162 if(locTrackTimeBased->dNumHitsUsedFordEdx_FDC > 0)
2167 double locProbabledEdx = locParticleID->
GetMostProbabledEdx_DC(locP, locChargedTrackHypothesis->
mass(), locTrackTimeBased->ddx_FDC,
false);
2190 double locTargetZCenter = 0.0;
2195 japp->RootWriteLock();
2205 locHistName =
"BCALTrackDOCA";
2207 locHistName =
"BCALTrackDeltaPhi";
2209 locHistName =
"BCALTrackDeltaZ";
2211 locHistName =
"BCALNeutralShowerEnergy";
2213 locHistName =
"BCALNeutralShowerDeltaT";
2215 locHistName =
"BCALNeutralShowerDeltaTVsE";
2217 locHistName =
"BCALNeutralShowerDeltaTVsZ";
2221 locHistName =
"FCALTrackDOCA";
2223 locHistName =
"FCALNeutralShowerEnergy";
2225 locHistName =
"FCALNeutralShowerDeltaT";
2227 locHistName =
"FCALNeutralShowerDeltaTVsE";
2243 vector<const DNeutralShower*> locNeutralShowers;
2244 locEventLoop->Get(locNeutralShowers);
2246 vector<const DTrackTimeBased*> locTrackTimeBasedVector;
2247 locEventLoop->Get(locTrackTimeBasedVector);
2250 locEventLoop->GetSingle(locDetectorMatches);
2252 vector<const DEventRFBunch*> locEventRFBunches;
2253 locEventLoop->Get(locEventRFBunches);
2254 double locStartTime = locEventRFBunches.empty() ? 0.0 : locEventRFBunches[0]->dTime;
2261 for(
size_t loc_i = 0; loc_i < locNeutralShowers.size(); ++loc_i)
2264 double locPathLength = (locNeutralShowers[loc_i]->dSpacetimeVertex.Vect() -
dTargetCenter).Mag();
2265 double locDeltaT = locNeutralShowers[loc_i]->dSpacetimeVertex.T() - locPathLength/29.9792458 - locStartTime;
2267 if(locNeutralShowers[loc_i]->dDetectorSystem ==
SYS_FCAL)
2270 locNeutralShowers[loc_i]->GetSingle(locFCALShower);
2272 double locDistance = 9.9E9;
2283 locNeutralShowers[loc_i]->GetSingle(locBCALShower);
2285 double locDistance = 9.9E9, locDeltaPhi = 9.9E9, locDeltaZ = 9.9E9;
2315 string locHistName, locHistTitle;
2317 vector<const DMCThrown*> locMCThrowns;
2318 locEventLoop->Get(locMCThrowns);
2322 double locTargetZCenter = 0.0;
2325 string locTrackSelectionTag =
"NotATag";
2326 if(gPARMS->Exists(
"COMBO:TRACK_SELECT_TAG"))
2327 gPARMS->GetParameter(
"COMBO:TRACK_SELECT_TAG", locTrackSelectionTag);
2331 japp->RootWriteLock();
2337 dTrackSelectionTag = (locTrackSelectionTag ==
"NotATag") ?
"PreSelect" : locTrackSelectionTag;
2347 for(
int locTruePIDFlag = 0; locTruePIDFlag < 2; ++locTruePIDFlag)
2349 if(locMCThrowns.empty() && (locTruePIDFlag == 1))
2352 string locDirName = (locTruePIDFlag == 1) ?
"TruePID" :
"ReconstructedPID";
2356 for(
int loc_i = -2; loc_i < int(
dTrackingPIDs.size()); ++loc_i)
2358 string locParticleName, locParticleROOTName;
2362 locParticleName =
"q-";
2363 locParticleROOTName =
"#it{q}^{-}";
2365 else if(loc_i == -1)
2367 locParticleName =
"q+";
2368 locParticleROOTName =
"#it{q}^{+}";
2377 pair<int, bool> locPIDPair(locPID,
bool(locTruePIDFlag));
2380 locHistName =
"BCALShowerEnergy";
2381 locHistTitle = locParticleROOTName +
";BCAL Shower Energy (GeV)";
2384 locHistName =
"BCALShowerTrackDepth";
2385 locHistTitle = locParticleROOTName +
";BCAL Shower Track Depth (cm)";
2388 locHistName =
"BCALShowerTrackDepthVsP";
2389 locHistTitle = locParticleROOTName +
";p (GeV/c);BCAL Shower Track Depth (cm)";
2393 locHistName =
"FCALShowerEnergy";
2394 locHistTitle = locParticleROOTName +
";FCAL Shower Energy (GeV)";
2397 locHistName =
"FCALShowerTrackDepth";
2398 locHistTitle = locParticleROOTName +
";FCAL Shower Track Depth (cm)";
2401 locHistName =
"FCALShowerTrackDepthVsP";
2402 locHistTitle = locParticleROOTName +
";p (GeV/c);FCAL Shower Track Depth (cm)";
2406 locHistName =
"SCEnergyVsTheta";
2407 locHistTitle = locParticleROOTName +
";#theta#circ;SC Point Energy (MeV)";
2410 locHistName =
"SCPhiVsTheta";
2411 locHistTitle = locParticleROOTName +
";#theta#circ;#phi#circ";
2414 gDirectory->cd(
"..");
2416 gDirectory->cd(
"..");
2432 vector<const DMCThrown*> locMCThrowns;
2433 locEventLoop->Get(locMCThrowns);
2436 if(!locMCThrowns.empty())
2444 vector<const DChargedTrack*> locChargedTracks;
2447 vector<const DMCThrownMatching*> locMCThrownMatchingVector;
2448 locEventLoop->Get(locMCThrownMatchingVector);
2451 locEventLoop->GetSingle(locEventRFBunch);
2458 for(
size_t loc_i = 0; loc_i < locChargedTracks.size(); ++loc_i)
2462 if(locUseTruePIDFlag && (!locMCThrownMatchingVector.empty()))
2464 double locMatchFOM = 0.0;
2465 const DMCThrown* locMCThrown = locMCThrownMatchingVector[0]->Get_MatchingMCThrown(locChargedTrackHypothesis, locMatchFOM);
2466 if(locMCThrown == NULL)
2469 locChargedTrackHypothesis = locMCThrownMatchingVector[0]->Get_MatchingChargedHypothesis(locMCThrown, locMatchFOM);
2472 pair<int, bool> locPIDPair(
int(locChargedTrackHypothesis->
PID()), locUseTruePIDFlag);
2474 int locQIndex = (locChargedTrackHypothesis->
charge() > 0.0) ? -1 : -2;
2475 pair<int, bool> locChargePair(locQIndex, locUseTruePIDFlag);
2483 if(locBCALShowerMatchParams != NULL)
2485 const DBCALShower* locBCALShower = locBCALShowerMatchParams->dBCALShower;
2490 if(!locDisregardPIDFlag)
2499 if(locFCALShowerMatchParams != NULL)
2501 const DFCALShower* locFCALShower = locFCALShowerMatchParams->dFCALShower;
2506 if(!locDisregardPIDFlag)
2515 if(locSCHitMatchParams != NULL)
2517 dHistMap_SCEnergyVsTheta[locChargePair]->Fill(locMomentum.Theta()*180.0/TMath::Pi(), locSCHitMatchParams->dHitEnergy*1.0E3);
2518 dHistMap_SCPhiVsTheta[locChargePair]->Fill(locMomentum.Theta()*180.0/TMath::Pi(), locMomentum.Phi()*180.0/TMath::Pi());
2520 if(!locDisregardPIDFlag)
2522 dHistMap_SCEnergyVsTheta[locPIDPair]->Fill(locMomentum.Theta()*180.0/TMath::Pi(), locSCHitMatchParams->dHitEnergy*1.0E3);
2523 dHistMap_SCPhiVsTheta[locPIDPair]->Fill(locMomentum.Theta()*180.0/TMath::Pi(), locMomentum.Phi()*180.0/TMath::Pi());
2533 string locHistName, locHistTitle;
2535 string locTrackSelectionTag =
"NotATag";
2536 if(gPARMS->Exists(
"COMBO:TRACK_SELECT_TAG"))
2537 gPARMS->GetParameter(
"COMBO:TRACK_SELECT_TAG", locTrackSelectionTag);
2541 japp->RootWriteLock();
2547 dTrackSelectionTag = (locTrackSelectionTag ==
"NotATag") ?
"PreSelect" : locTrackSelectionTag;
2552 locHistName =
"RFTrackDeltaT";
2553 locHistTitle =
";#Deltat_{RF - Track} (ns)";
2560 locHistName =
"EventVertexZ";
2561 locHistTitle =
";Event Vertex-Z (cm)";
2565 locHistName =
"EventVertexYVsX";
2566 locHistTitle =
";Event Vertex-X (cm);Event Vertex-Y (cm)";
2570 locHistName =
"EventVertexT";
2571 locHistTitle =
";Event Vertex Time (ns)";
2574 gDirectory->cd(
"..");
2581 locHistName =
"EventVertexZ";
2582 locHistTitle =
";Event Vertex-Z (cm)";
2586 locHistName =
"EventVertexYVsX";
2587 locHistTitle =
";Event Vertex-X (cm);Event Vertex-Y (cm)";
2591 locHistName =
"EventVertexT";
2592 locHistTitle =
";Event Vertex Time (ns)";
2596 locHistName =
"ConfidenceLevel";
2608 locHistName =
"Pull_Px";
2609 locHistTitle = locParticleROOTName +
string(
", Vertex Fit;p_{x} Pull;# Events");
2613 locHistName =
"Pull_Py";
2614 locHistTitle = locParticleROOTName +
string(
", Vertex Fit;p_{y} Pull;# Events");
2618 locHistName =
"Pull_Pz";
2619 locHistTitle = locParticleROOTName +
string(
", Vertex Fit;p_{z} Pull;# Events");
2623 locHistName =
"Pull_Xx";
2624 locHistTitle = locParticleROOTName +
string(
", Vertex Fit;x_{x} Pull;# Events");
2628 locHistName =
"Pull_Xy";
2629 locHistTitle = locParticleROOTName +
string(
", Vertex Fit;x_{y} Pull;# Events");
2633 locHistName =
"Pull_Xz";
2634 locHistTitle = locParticleROOTName +
string(
", Vertex Fit;x_{z} Pull;# Events");
2637 gDirectory->cd(
"..");
2640 gDirectory->cd(
"..");
2653 const DVertex* locVertex = NULL;
2654 locEventLoop->GetSingle(locVertex);
2656 vector<const DChargedTrack*> locChargedTracks;
2660 locEventLoop->GetSingle(locDetectorMatches);
2663 locEventLoop->GetSingle(locParticleID);
2666 locEventLoop->GetSingle(locEventRFBunch);
2672 if(!locRFTimeFactory->brun_was_called())
2674 locRFTimeFactory->
brun(locEventLoop, locEventLoop->GetJEvent().GetRunNumber());
2675 locRFTimeFactory->Set_brun_called();
2681 vector<const DTrackTimeBased*> locTrackTimeBasedVector;
2682 for(
size_t loc_i = 0; loc_i < locChargedTracks.size(); ++loc_i)
2686 if(locTrackTimeBased != NULL)
2687 locTrackTimeBasedVector.push_back(locTrackTimeBased);
2696 for(
size_t loc_i = 0; loc_i < locChargedTracks.size(); ++loc_i)
2699 double locPropagatedRFTime = locParticleID->
Calc_PropagatedRFTime(locChargedTrackHypothesis, locEventRFBunch);
2701 double locDeltaT = locShiftedRFTime - locChargedTrackHypothesis->
time();
2708 if(locChargedTracks.size() >= 2)
2732 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
2739 map<const JObject*, map<DKinFitPullType, double> >::const_iterator locParticleIterator = locVertex->
dKinFitPulls.find(locKinematicData);
2740 if(locParticleIterator == locVertex->
dKinFitPulls.end())
2743 const map<DKinFitPullType, double>& locPullMap = locParticleIterator->second;
2744 map<DKinFitPullType, double>::const_iterator locPullIterator = locPullMap.begin();
2745 for(; locPullIterator != locPullMap.end(); ++locPullIterator)
2757 string locHistName, locHistTitle, locParticleName, locParticleROOTName;
2760 string locTrackSelectionTag =
"NotATag", locShowerSelectionTag =
"NotATag";
2761 if(gPARMS->Exists(
"COMBO:TRACK_SELECT_TAG"))
2762 gPARMS->GetParameter(
"COMBO:TRACK_SELECT_TAG", locTrackSelectionTag);
2763 if(gPARMS->Exists(
"COMBO:SHOWER_SELECT_TAG"))
2764 gPARMS->GetParameter(
"COMBO:SHOWER_SELECT_TAG", locShowerSelectionTag);
2768 japp->RootWriteLock();
2774 dTrackSelectionTag = (locTrackSelectionTag ==
"NotATag") ?
"PreSelect" : locTrackSelectionTag;
2776 dShowerSelectionTag = (locShowerSelectionTag ==
"NotATag") ?
"PreSelect" : locShowerSelectionTag;
2785 locHistName =
"Momentum";
2786 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";p (GeV/c)");
2788 gDirectory->cd(
"..");
2794 locHistName =
"BetaVsP_Q+";
2795 locHistTitle =
"q^{+};p (GeV/c);#beta";
2798 locHistName =
"BetaVsP_Q-";
2799 locHistTitle =
"q^{-};p (GeV/c);#beta";
2802 gDirectory->cd(
"..");
2812 locHistName =
"Momentum";
2813 locHistTitle = locParticleROOTName +
string(
";p (GeV/c)");
2817 locHistName =
"Theta";
2818 locHistTitle = locParticleROOTName +
string(
";#theta#circ");
2822 locHistName =
"Phi";
2823 locHistTitle = locParticleROOTName +
string(
";#phi#circ");
2827 locHistName =
"PVsTheta";
2828 locHistTitle = locParticleROOTName +
string(
";#theta#circ;p (GeV/c)");
2832 locHistName =
"PhiVsTheta";
2833 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#phi#circ");
2837 locHistName =
"BetaVsP";
2838 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#beta");
2842 locHistName =
"DeltaBetaVsP";
2843 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#Delta#beta");
2847 locHistName =
"VertexZ";
2848 locHistTitle = locParticleROOTName +
string(
";Vertex-Z (cm)");
2852 locHistName =
"VertexYVsX";
2853 locHistTitle = locParticleROOTName +
string(
";Vertex-X (cm);Vertex-Y (cm)");
2857 locHistName =
"VertexT";
2858 locHistTitle = locParticleROOTName +
string(
";Vertex-T (ns)");
2861 gDirectory->cd(
"..");
2875 vector<const DBeamPhoton*> locBeamPhotons;
2876 locEventLoop->Get(locBeamPhotons);
2883 for(
size_t loc_i = 0; loc_i < locBeamPhotons.size(); ++loc_i)
2888 vector<const DChargedTrack*> locPreSelectChargedTracks;
2891 for(
size_t loc_i = 0; loc_i < locPreSelectChargedTracks.size(); ++loc_i)
2893 const DChargedTrackHypothesis* locChargedTrackHypothesis = locPreSelectChargedTracks[loc_i]->Get_BestTrackingFOM();
2897 double locP = locMomentum.Mag();
2898 double locBeta_Timing = locChargedTrackHypothesis->
measuredBeta();
2914 for(
size_t loc_i = 0; loc_i < locPreSelectChargedTracks.size(); ++loc_i)
2919 double locPhi = locMomentum.Phi()*180.0/TMath::Pi();
2920 double locTheta = locMomentum.Theta()*180.0/TMath::Pi();
2921 double locP = locMomentum.Mag();
2922 double locBeta_Timing = locChargedTrackHypothesis->
measuredBeta();
2923 double locDeltaBeta = locBeta_Timing - locChargedTrackHypothesis->
lorentzMomentum().Beta();
2948 vector<const DNeutralParticle*> locNeutralParticles;
2951 for(
size_t loc_i = 0; loc_i < locNeutralParticles.size(); ++loc_i)
2962 double locPhi = locMomentum.Phi()*180.0/TMath::Pi();
2963 double locTheta = locMomentum.Theta()*180.0/TMath::Pi();
2964 double locP = locMomentum.Mag();
2966 double locBeta_Timing = locNeutralParticleHypothesis->
measuredBeta();
2967 double locDeltaBeta = locBeta_Timing - locNeutralParticleHypothesis->
lorentzMomentum().Beta();
2992 string locHistName, locHistTitle, locParticleName, locParticleROOTName;
2995 string locTrackSelectionTag =
"NotATag", locShowerSelectionTag =
"NotATag";
2996 if(gPARMS->Exists(
"COMBO:TRACK_SELECT_TAG"))
2997 gPARMS->GetParameter(
"COMBO:TRACK_SELECT_TAG", locTrackSelectionTag);
2998 if(gPARMS->Exists(
"COMBO:SHOWER_SELECT_TAG"))
2999 gPARMS->GetParameter(
"COMBO:SHOWER_SELECT_TAG", locShowerSelectionTag);
3003 japp->RootWriteLock();
3009 dTrackSelectionTag = (locTrackSelectionTag ==
"NotATag") ?
"PreSelect" : locTrackSelectionTag;
3011 dShowerSelectionTag = (locShowerSelectionTag ==
"NotATag") ?
"PreSelect" : locShowerSelectionTag;
3024 locHistName =
"PxErrorVsP";
3025 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{p_{x}} (GeV/c)");
3028 locHistName =
"PxErrorVsTheta";
3029 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{p_{x}} (GeV/c)");
3032 locHistName =
"PxErrorVsPhi";
3033 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{p_{x}} (GeV/c)");
3037 locHistName =
"PyErrorVsP";
3038 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{p_{y}} (GeV/c)");
3041 locHistName =
"PyErrorVsTheta";
3042 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{p_{y}} (GeV/c)");
3045 locHistName =
"PyErrorVsPhi";
3046 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{p_{y}} (GeV/c)");
3050 locHistName =
"PzErrorVsP";
3051 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{p_{z}} (GeV/c)");
3054 locHistName =
"PzErrorVsTheta";
3055 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{p_{z}} (GeV/c)");
3058 locHistName =
"PzErrorVsPhi";
3059 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{p_{z}} (GeV/c)");
3063 locHistName =
"XErrorVsP";
3064 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{x} (cm)");
3067 locHistName =
"XErrorVsTheta";
3068 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{x} (cm)");
3071 locHistName =
"XErrorVsPhi";
3072 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{x} (cm)");
3076 locHistName =
"YErrorVsP";
3077 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{y} (cm)");
3080 locHistName =
"YErrorVsTheta";
3081 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{y} (cm)");
3084 locHistName =
"YErrorVsPhi";
3085 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{y} (cm)");
3089 locHistName =
"ZErrorVsP";
3090 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{z} (cm)");
3093 locHistName =
"ZErrorVsTheta";
3094 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{z} (cm)");
3097 locHistName =
"ZErrorVsPhi";
3098 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{z} (cm)");
3101 gDirectory->cd(
"..");
3105 for(
bool locIsBCALFlag : {
false,
true})
3107 string locDirName = locIsBCALFlag ?
"Photon_BCAL" :
"Photon_FCAL";
3116 locHistName =
"EErrorVsP";
3117 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{E} (GeV)");
3120 locHistName =
"EErrorVsTheta";
3121 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{E} (GeV)");
3124 locHistName =
"EErrorVsPhi";
3125 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{E} (GeV)");
3129 locHistName =
"XErrorVsP";
3130 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{x} (cm)");
3133 locHistName =
"XErrorVsTheta";
3134 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{x} (cm)");
3137 locHistName =
"XErrorVsPhi";
3138 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{x} (cm)");
3142 locHistName =
"YErrorVsP";
3143 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{y} (cm)");
3146 locHistName =
"YErrorVsTheta";
3147 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{y} (cm)");
3150 locHistName =
"YErrorVsPhi";
3151 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{y} (cm)");
3155 locHistName =
"ZErrorVsP";
3156 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{z} (cm)");
3159 locHistName =
"ZErrorVsTheta";
3160 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{z} (cm)");
3163 locHistName =
"ZErrorVsPhi";
3164 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{z} (cm)");
3168 locHistName =
"TErrorVsP";
3169 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#sigma_{t} (ns)");
3172 locHistName =
"TErrorVsTheta";
3173 locHistTitle = locParticleROOTName +
string(
";#theta#circ;#sigma_{t} (ns)");
3176 locHistName =
"TErrorVsPhi";
3177 locHistTitle = locParticleROOTName +
string(
";#phi#circ;#sigma_{t} (ns)");
3180 gDirectory->cd(
"..");
3194 vector<const DChargedTrack*> locPreSelectChargedTracks;
3197 for(
size_t loc_i = 0; loc_i < locPreSelectChargedTracks.size(); ++loc_i)
3206 double locPhi = locMomentum.Phi()*180.0/TMath::Pi();
3207 double locTheta = locMomentum.Theta()*180.0/TMath::Pi();
3208 double locP = locMomentum.Mag();
3210 const TMatrixFSym& locCovarianceMatrix = *(locChargedTrackHypothesis->
errorMatrix().get());
3211 double locPxError =
sqrt(locCovarianceMatrix(0, 0));
3212 double locPyError =
sqrt(locCovarianceMatrix(1, 1));
3213 double locPzError =
sqrt(locCovarianceMatrix(2, 2));
3214 double locXError =
sqrt(locCovarianceMatrix(3, 3));
3215 double locYError =
sqrt(locCovarianceMatrix(4, 4));
3216 double locZError =
sqrt(locCovarianceMatrix(5, 5));
3250 vector<const DNeutralParticle*> locNeutralParticles;
3253 for(
size_t loc_i = 0; loc_i < locNeutralParticles.size(); ++loc_i)
3260 double locPhi = locMomentum.Phi()*180.0/TMath::Pi();
3261 double locTheta = locMomentum.Theta()*180.0/TMath::Pi();
3262 double locP = locMomentum.Mag();
3264 const DNeutralShower* locNeutralShower = locNeutralParticles[loc_i]->dNeutralShower;
3265 const TMatrixFSym& locCovarianceMatrix = *(locNeutralShower->
dCovarianceMatrix);
3267 double locEError =
sqrt(locCovarianceMatrix(0, 0));
3268 double locXError =
sqrt(locCovarianceMatrix(1, 1));
3269 double locYError =
sqrt(locCovarianceMatrix(2, 2));
3270 double locZError =
sqrt(locCovarianceMatrix(3, 3));
3271 double locTError =
sqrt(locCovarianceMatrix(4, 4));
3308 bool locIsRESTEvent = locEventLoop->GetJEvent().GetStatusBit(
kSTATUS_REST);
3312 japp->RootWriteLock();
3317 locHistName =
"NumHighLevelObjects";
3318 if(gDirectory->Get(locHistName.c_str()) != NULL)
3339 locHistName =
"NumChargedTracks";
3341 locHistName =
"NumPosChargedTracks";
3342 dHist_NumPosChargedTracks = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{+} DChargedTrack", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3343 locHistName =
"NumNegChargedTracks";
3344 dHist_NumNegChargedTracks = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{-} DChargedTrack", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3347 locHistName =
"NumTimeBasedTracks";
3348 dHist_NumTimeBasedTracks = GetOrCreate_Histogram<TH1D>(locHistName,
";# Time-Based Tracks", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3349 locHistName =
"NumPosTimeBasedTracks";
3350 dHist_NumPosTimeBasedTracks = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{+} Time-Based Tracks", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3351 locHistName =
"NumNegTimeBasedTracks";
3352 dHist_NumNegTimeBasedTracks = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{-} Time-Based Tracks", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3357 locHistName =
"NumWireBasedTracks";
3358 dHist_NumWireBasedTracks = GetOrCreate_Histogram<TH1D>(locHistName,
";# Wire-Based Tracks", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3359 locHistName =
"NumPosWireBasedTracks";
3360 dHist_NumPosWireBasedTracks = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{-} Wire-Based Tracks", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3361 locHistName =
"NumNegWireBasedTracks";
3362 dHist_NumNegWireBasedTracks = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{-} Wire-Based Tracks", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3365 locHistName =
"NumTrackCandidates";
3366 dHist_NumTrackCandidates = GetOrCreate_Histogram<TH1D>(locHistName,
";# Track Candidates", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3367 locHistName =
"NumPosTrackCandidates";
3368 dHist_NumPosTrackCandidates = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{+} Track Candidates", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3369 locHistName =
"NumNegTrackCandidates";
3370 dHist_NumNegTrackCandidates = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{-} Track Candidates", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3373 locHistName =
"NumPosTrackCandidates_CDC";
3374 dHist_NumPosTrackCandidates_CDC = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{+} CDC Track Candidates", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3375 locHistName =
"NumNegTrackCandidates_CDC";
3376 dHist_NumNegTrackCandidates_CDC = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{-} CDC Track Candidates", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3379 locHistName =
"NumPosTrackCandidates_FDC";
3380 dHist_NumPosTrackCandidates_FDC = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{+} FDC Track Candidates", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3381 locHistName =
"NumNegTrackCandidates_FDC";
3382 dHist_NumNegTrackCandidates_FDC = GetOrCreate_Histogram<TH1D>(locHistName,
";# #it{q}^{-} FDC Track Candidates", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3386 locHistName =
"NumBeamPhotons";
3390 locHistName =
"NumFCALShowers";
3391 dHist_NumFCALShowers = GetOrCreate_Histogram<TH1D>(locHistName,
";# DFCALShower", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3392 locHistName =
"NumBCALShowers";
3393 dHist_NumBCALShowers = GetOrCreate_Histogram<TH1D>(locHistName,
";# DBCALShower", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3394 locHistName =
"NumNeutralShowers";
3395 dHist_NumNeutralShowers = GetOrCreate_Histogram<TH1D>(locHistName,
";# DNeutralShower", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3396 locHistName =
"NumTOFPoints";
3397 dHist_NumTOFPoints = GetOrCreate_Histogram<TH1D>(locHistName,
";# DTOFPoint", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3398 locHistName =
"NumSCHits";
3399 dHist_NumSCHits = GetOrCreate_Histogram<TH1D>(locHistName,
";# DSCHit", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3403 locHistName =
"NumTAGMHits";
3404 dHist_NumTAGMHits = GetOrCreate_Histogram<TH1D>(locHistName,
";# DTAGMHit", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3405 locHistName =
"NumTAGHHits";
3406 dHist_NumTAGHHits = GetOrCreate_Histogram<TH1D>(locHistName,
";# DTAGHHit", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3410 locHistName =
"NumTrackBCALMatches";
3412 locHistName =
"NumTrackFCALMatches";
3413 dHist_NumTrackFCALMatches = GetOrCreate_Histogram<TH1D>(locHistName,
";# Track-FCAL Matches", dMaxNumMatchObjects + 1, -0.5, (float)dMaxNumMatchObjects + 0.5);
3414 locHistName =
"NumTrackTOFMatches";
3415 dHist_NumTrackTOFMatches = GetOrCreate_Histogram<TH1D>(locHistName,
";# Track-TOF Matches", dMaxNumMatchObjects + 1, -0.5, (float)dMaxNumMatchObjects + 0.5);
3416 locHistName =
"NumTrackSCMatches";
3417 dHist_NumTrackSCMatches = GetOrCreate_Histogram<TH1D>(locHistName,
";# Track-SC Matches", dMaxNumMatchObjects + 1, -0.5, (float)dMaxNumMatchObjects + 0.5);
3422 locHistName =
"NumCDCHits";
3424 locHistName =
"NumFDCWireHits";
3426 locHistName =
"NumFDCCathodeHits";
3428 locHistName =
"NumFDCPseudoHits";
3431 locHistName =
"NumTOFHits";
3433 locHistName =
"NumBCALHits";
3434 dHist_NumBCALHits = GetOrCreate_Histogram<TH1I>(locHistName,
";# DBCALHit", dMaxNumTOFCalorimeterHits + 1, -0.5, (float)dMaxNumTOFCalorimeterHits + 0.5);
3435 locHistName =
"NumFCALHits";
3436 dHist_NumFCALHits = GetOrCreate_Histogram<TH1I>(locHistName,
";# DFCALHit", dMaxNumTOFCalorimeterHits + 1, -0.5, (float)dMaxNumTOFCalorimeterHits + 0.5);
3438 locHistName =
"NumRFSignals";
3439 dHist_NumRFSignals = GetOrCreate_Histogram<TH1I>(locHistName,
";# DRFDigiTime + # DRFTDCDigiTime", dMaxNumObjects + 1, -0.5, (float)dMaxNumObjects + 0.5);
3453 bool locIsRESTEvent = locEventLoop->GetJEvent().GetStatusBit(
kSTATUS_REST);
3455 vector<const DTrackTimeBased*> locTrackTimeBasedVector;
3456 locEventLoop->Get(locTrackTimeBasedVector);
3458 vector<const DBeamPhoton*> locBeamPhotons;
3459 locEventLoop->Get(locBeamPhotons);
3461 vector<const DFCALShower*> locFCALShowers;
3462 locEventLoop->Get(locFCALShowers);
3464 vector<const DChargedTrack*> locChargedTracks;
3465 locEventLoop->Get(locChargedTracks);
3467 vector<const DBCALShower*> locBCALShowers;
3468 locEventLoop->Get(locBCALShowers);
3470 vector<const DNeutralShower*> locNeutralShowers;
3471 locEventLoop->Get(locNeutralShowers);
3473 vector<const DTOFPoint*> locTOFPoints;
3474 locEventLoop->Get(locTOFPoints);
3476 vector<const DSCHit*> locSCHits;
3477 locEventLoop->Get(locSCHits);
3479 vector<const DRFTime*> locRFTimes;
3480 locEventLoop->Get(locRFTimes);
3483 locEventLoop->GetSingle(locDetectorMatches);
3486 vector<const DTrackWireBased*> locTrackWireBasedVector;
3487 vector<const DTrackCandidate*> locTrackCandidates;
3488 vector<const DTrackCandidate*> locTrackCandidates_CDC;
3489 vector<const DTrackCandidate*> locTrackCandidates_FDC;
3490 vector<const DCDCHit*> locCDCHits;
3491 vector<const DFDCHit*> locFDCHits;
3492 vector<const DTOFHit*> locTOFHits;
3493 vector<const DBCALHit*> locBCALHits;
3494 vector<const DFCALHit*> locFCALHits;
3495 vector<const DTAGMHit*> locTAGMHits;
3496 vector<const DTAGHHit*> locTAGHHits;
3497 vector<const DFDCPseudo*> locFDCPseudoHits;
3498 vector<const DRFDigiTime*> locRFDigiTimes;
3499 vector<const DRFTDCDigiTime*> locRFTDCDigiTimes;
3501 size_t locNumFDCWireHits = 0, locNumFDCCathodeHits = 0;
3504 locEventLoop->Get(locTrackWireBasedVector);
3505 locEventLoop->Get(locTrackCandidates);
3506 locEventLoop->Get(locTrackCandidates_CDC,
"CDC");
3507 locEventLoop->Get(locTrackCandidates_FDC,
"FDCCathodes");
3508 locEventLoop->Get(locCDCHits);
3509 locEventLoop->Get(locFDCHits);
3510 locEventLoop->Get(locFDCPseudoHits);
3511 locEventLoop->Get(locTOFHits);
3512 locEventLoop->Get(locBCALHits);
3513 locEventLoop->Get(locFCALHits);
3514 locEventLoop->Get(locTAGHHits);
3515 locEventLoop->Get(locTAGMHits);
3516 locEventLoop->Get(locRFDigiTimes);
3517 locEventLoop->Get(locRFTDCDigiTimes);
3519 for(
size_t loc_i = 0; loc_i < locFDCHits.size(); ++loc_i)
3522 ++locNumFDCWireHits;
3524 ++locNumFDCCathodeHits;
3549 unsigned int locNumPos = 0, locNumNeg = 0;
3550 for(
size_t loc_i = 0; loc_i < locChargedTracks.size(); ++loc_i)
3552 if(
ParticleCharge(locChargedTracks[loc_i]->Get_BestFOM()->PID()) > 0)
3562 locNumPos = 0; locNumNeg = 0;
3563 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
3577 locNumPos = 0; locNumNeg = 0;
3578 for(
size_t loc_i = 0; loc_i < locTrackWireBasedVector.size(); ++loc_i)
3590 locNumPos = 0; locNumNeg = 0;
3591 for(
size_t loc_i = 0; loc_i < locTrackCandidates.size(); ++loc_i)
3593 if(locTrackCandidates[loc_i]->charge() > 0.0)
3603 locNumPos = 0; locNumNeg = 0;
3604 for(
size_t loc_i = 0; loc_i < locTrackCandidates_CDC.size(); ++loc_i)
3606 if(locTrackCandidates_CDC[loc_i]->charge() > 0.0)
3615 locNumPos = 0; locNumNeg = 0;
3616 for(
size_t loc_i = 0; loc_i < locTrackCandidates_FDC.size(); ++loc_i)
3618 if(locTrackCandidates_FDC[loc_i]->charge() > 0.0)
3662 dHist_NumRFSignals->Fill((Double_t)(locRFDigiTimes.size() + locRFTDCDigiTimes.size()));
3672 string locTrackSelectionTag =
"NotATag", locShowerSelectionTag =
"NotATag";
3673 if(gPARMS->Exists(
"COMBO:TRACK_SELECT_TAG"))
3674 gPARMS->GetParameter(
"COMBO:TRACK_SELECT_TAG", locTrackSelectionTag);
3675 if(gPARMS->Exists(
"COMBO:SHOWER_SELECT_TAG"))
3676 gPARMS->GetParameter(
"COMBO:SHOWER_SELECT_TAG", locShowerSelectionTag);
3680 japp->RootWriteLock();
3686 dTrackSelectionTag = (locTrackSelectionTag ==
"NotATag") ?
"PreSelect" : locTrackSelectionTag;
3688 dShowerSelectionTag = (locShowerSelectionTag ==
"NotATag") ?
"PreSelect" : locShowerSelectionTag;
3692 string locHistName(
"NumReconstructedParticles");
3693 if(gDirectory->Get(locHistName.c_str()) != NULL)
3710 locHistName =
"NumGoodReconstructedParticles";
3711 if(gDirectory->Get(locHistName.c_str()) != NULL)
3739 vector<const DChargedTrack*> locChargedTracks;
3740 locEventLoop->Get(locChargedTracks);
3742 vector<const DChargedTrack*> locGoodChargedTracks;
3746 size_t locNumPositiveTracks = 0, locNumNegativeTracks = 0;
3747 map<Particle_t, size_t> locNumTracksByPID;
3748 for(
size_t loc_i = 0; loc_i < locChargedTracks.size(); ++loc_i)
3753 if(locChargedTrackHypothesis->
charge() > 0.0)
3754 ++locNumPositiveTracks;
3756 ++locNumNegativeTracks;
3758 if(locNumTracksByPID.find(locPID) != locNumTracksByPID.end())
3759 ++locNumTracksByPID[locPID];
3761 locNumTracksByPID[locPID] = 1;
3765 size_t locNumGoodPositiveTracks = 0, locNumGoodNegativeTracks = 0;
3766 map<Particle_t, size_t> locNumGoodTracksByPID;
3767 for(
size_t loc_i = 0; loc_i < locGoodChargedTracks.size(); ++loc_i)
3772 double locPIDFOM = locChargedTrackHypothesis->
Get_FOM();
3774 if(locChargedTrackHypothesis->
charge() > 0.0)
3775 ++locNumGoodPositiveTracks;
3777 ++locNumGoodNegativeTracks;
3782 if(locNumGoodTracksByPID.find(locPID) != locNumGoodTracksByPID.end())
3783 ++locNumGoodTracksByPID[locPID];
3785 locNumGoodTracksByPID[locPID] = 1;
3788 vector<const DNeutralParticle*> locNeutralParticles;
3789 locEventLoop->Get(locNeutralParticles);
3791 vector<const DNeutralParticle*> locGoodNeutralParticles;
3795 for(
size_t loc_i = 0; loc_i < locNeutralParticles.size(); ++loc_i)
3802 if(locNumTracksByPID.find(locPID) != locNumTracksByPID.end())
3803 ++locNumTracksByPID[locPID];
3805 locNumTracksByPID[locPID] = 1;
3809 for(
size_t loc_i = 0; loc_i < locGoodNeutralParticles.size(); ++loc_i)
3816 if(locNumGoodTracksByPID.find(locPID) != locNumGoodTracksByPID.end())
3817 ++locNumGoodTracksByPID[locPID];
3819 locNumGoodTracksByPID[locPID] = 1;
3822 size_t locNumGoodTracks = locNumGoodPositiveTracks + locNumGoodNegativeTracks;
unsigned int dNum2DBetaBins
map< bool, TH2I * > dHistMap_ShowerZErrorVsP
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo=NULL)
unsigned int dNum2DThetaBins
TH2I * dHist_NumPossDCHitsPerTrackVsTheta
void Initialize(JEventLoop *locEventLoop)
TH1D * dHist_NumPosWireBasedTracks
map< DetectorSystem_t, map< int, TH2I * > > dHistMap_BetaVsP
vector< Particle_t > dTrackingPIDs
unsigned int dNum2DDeltaTBins
TH2I * dHist_SCRFDeltaTVsSector
TDirectoryFile * ChangeTo_BaseDirectory(void)
TH1D * dHist_NumPosTrackCandidates_FDC
TH2I * dEventVertexYVsX_AllEvents
unsigned int dNum2DZErrorBins
map< Particle_t, TH2I * > dHistMap_TrackYErrorVsP
map< bool, TH2I * > dHistMap_TrackPVsTheta_HitMatch
unsigned int PredictSCSector(const DReferenceTrajectory *rt, DVector3 *locOutputProjPos=nullptr, bool *locProjBarrelRegion=nullptr, double *locMinDPhi=nullptr) const
map< bool, TH1I * > dHistMap_SCPaddle_NoseRegion_NoHit
TH1D * dHist_NumNegChargedTracks
TH1I * dHist_BCALNeutralShowerEnergy
void Get_FDCPlanes(unsigned int locBitPattern, set< int > &locFDCPlanes) const
TH2I * dHist_FCALNeutralShowerDeltaTVsE
unsigned int dNum2DPhiBins
void Get_CDCRings(unsigned int locBitPattern, set< int > &locCDCRings) const
map< Particle_t, TH2I * > dHistMap_TrackPyErrorVsTheta
unsigned int dNum2DDeltaZBins
map< Particle_t, TH2I * > dHistMap_BetaVsP
TH1I * dHist_BCALShowerPhi
map< bool, TH2I * > dHistMap_TOFPointTrackDeltaYVsVerticalPaddle
unsigned int dMaxNumMatchObjects
DRFTime_factory * locRFTimeFactory
unsigned int dNum2DThetaBins
unsigned int dMaxNumCDCHits
TH2I * dHist_MCMatchedHitsVsP
double dSCMatchMinDeltaPhi
static char * ParticleName_ROOT(Particle_t p)
const DTOFPaddleHit * Get_ClosestTOFPaddleHit_Horizontal(const DReferenceTrajectory *locReferenceTrajectory, const vector< const DTOFPaddleHit * > &locTOFPaddleHits, double locInputStartTime, double &locBestDeltaY, double &locBestDistance) const
map< Particle_t, TH2I * > dHistMap_TrackPxErrorVsPhi
DResourcePool< DParticleComboStep > dResourcePool_ParticleComboStep
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo=NULL)
unsigned int dNumVertexXYBins
TH2I * dHist_TrackHitFractionVsTheta
bool Get_DistanceToNearestTrack(const DBCALShower *locBCALShower, double &locDistance) const
unsigned int dNum2DShowerEnergyBins
TH1I * dEventVertexT_AllEvents
TH1I * dHist_KinFitConfidenceLevel
string dTrackSelectionTag
map< Particle_t, TH2I * > dHistMap_TrackZErrorVsP
TH1I * dHist_NumDCHitsPerTrack
unsigned int dNum2DPzErrorBins
TH1D * dHist_NumTrackSCMatches
TH1I * dHist_BCALTrackDOCA
map< bool, TH2I * > dHistMap_ShowerZErrorVsTheta
map< int, TH2I * > dHistMap_PVsTheta_Candidates
map< pair< int, bool >, TH2I * > dHistMap_SCEnergyVsTheta
DResourcePool< DParticleCombo > dResourcePool_ParticleCombo
map< Particle_t, TH2I * > dHistMap_TrackPxErrorVsP
map< bool, TH2I * > dHistMap_SCPaddleVsTheta_HasHit
unsigned int dMaxNumObjects
TH1F * dVirtualMemoryVsEventNumber
string dShowerSelectionTag
map< bool, TH2I * > dHistMap_TrackFCALYVsX_HasHit
TH2I * dHist_FDCPlaneVsTheta_WireBased
unsigned int dNum2DShowerZErrorBins
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
TH1I * dHist_FCALNeutralShowerEnergy
map< bool, TH2I * > dHistMap_SCTrackDeltaPhiVsZ
TH2I * dHist_FDCPlaneVsTheta_TimeBased_GoodTrackFOM
TH1D * dHist_NumNegWireBasedTracks
TH1F * dResidentMemoryVsEventNumber
map< bool, TH2I * > dHistMap_SCPaddleVsZ_NoHit
map< pair< int, bool >, TH2I * > dHistMap_BCALShowerTrackDepthVsP
map< bool, TH2I * > dHistMap_TOFPaddleTrackYVsVerticalPaddle_NoHit
unsigned int dMinHitRingsPerCDCSuperlayer
deque< Particle_t > dFinalStatePIDs
double Get_FOM(void) const
map< Particle_t, TH1I * > dHistMap_NumPhotons_DIRC
TDirectoryFile * CreateAndChangeTo_Directory(TDirectoryFile *locBaseDirectory, string locDirName, string locDirTitle)
TH1D * dHist_NumBeamPhotons
unsigned int dMaxNumTOFCalorimeterHits
map< bool, TH1I * > dHistMap_TrackTOFR_HasHit
map< DetectorSystem_t, map< bool, TH2I * > > dHistMap_PVsTheta_HasHit
map< bool, TH2I * > dHistMap_ShowerYErrorVsTheta
unsigned int dNumTOFRBins
DResourcePool< DKinFitConstraint_Mass > dResourcePool_MassConstraint
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo=NULL)
map< Particle_t, TH1I * > dHistMap_Phi
TH1D * dHist_NumFCALShowers
const DVector3 & position(void) const
map< Particle_t, TH2I * > dHistMap_TrackYErrorVsTheta
map< bool, TH1I * > dHistMap_TOFPaddleTrackDeltaY
void Initialize(JEventLoop *locEventLoop)
unsigned int dNum2DSCZBins
const DTrackTimeBased * Get_TrackTimeBased(void) const
TH1I * dHist_FCALShowerEnergy
map< bool, TH2I * > dHistMap_TOFPointTrackDeltaXVsVerticalPaddle
TDirectoryFile * CreateAndChangeTo_ActionDirectory(void)
unsigned int dNumHitEnergyBins
void Read_MemoryUsage(double &vm_usage, double &resident_set)
TH1I * dHist_TOFPointEnergy
map< Particle_t, TH2I * > dHistMap_VertexYVsX
unsigned int dNum2DBCALZBins
unsigned int dNumDeltaPhiBins
TH2I * dHist_CDCRingVsTheta_Candidates
TH1D * dHist_NumTrackBCALMatches
unsigned int potential_cdc_hits_on_track
map< DetectorSystem_t, map< Particle_t, TH2I * > > dHistMap_DeltadEdXVsP
size_t Get_NumTrackFCALMatches(void) const
map< Particle_t, TH1I * > dHistMap_Theta
size_t Get_NumTrackSCMatches(void) const
DResourcePool< DKinematicData > dResourcePool_KinematicData
static char * ParticleType(Particle_t p)
map< Particle_t, TH2I * > dHistMap_TrackPyErrorVsPhi
TH1D * dHist_NumChargedTracks
TH2I * dHist_FDCPlaneVsTheta_TimeBased
TH2I * dHist_BCALNeutralShowerDeltaTVsZ
unsigned int dDIRCThetaCBins
vector< Particle_t > dFinalStatePIDs
TH2I * dHist_SCHitEnergyVsSector
string dTrackSelectionTag
double measuredBeta(void) const
deque< Particle_t > dFinalStatePIDs
map< bool, TH2I * > dHistMap_SCTrackDeltaPhiVsTheta
double Calc_PropagatedRFTime(const DKinematicData *locKinematicData, const DEventRFBunch *locEventRFBunch) const
TH1I * dHist_NumFDCWireHits
static int ParticleCharge(Particle_t p)
map< bool, TH1I * > dHistMap_TrackTOFP_HasHit
unsigned int dNum2DPhiBins
unsigned int dNum2DDeltaTBins
string dShowerSelectionTag
map< Particle_t, TH2I * > dHistMap_TrackYErrorVsPhi
map< int, TH2I * > dHistMap_PVsTheta_TimeBased_HighTrackFOM
map< bool, TH2I * > dHistMap_SCTrackDeltaPhiVsP
unsigned int dNumConfidenceLevelBins
shared_ptr< const DTOFHitMatchParams > Get_TOFHitMatchParams(void) const
string dTrackSelectionTag
TH2I * dHist_FDCPlaneVsTheta_Candidates
map< bool, TH2I * > dHistMap_TrackBCALModuleVsZ_HasHit
map< bool, TH2I * > dHistMap_ShowerYErrorVsP
map< int, TH2I * > dHistMap_PVsTheta_GoodWireBased_BadTimeBased
TH2I * dHist_TAGMRFDeltaTVsColumn
TH2I * dHist_TOFPointYVsX
bool PredictFCALHit(const DReferenceTrajectory *rt, unsigned int &row, unsigned int &col, DVector3 *intersection=nullptr) const
DetectorSystem_t dDetectorSystem
unsigned int dNum2DDeltaBetaBins
map< Particle_t, TH2I * > dHistMap_Ldiff_kpiVsP_DIRC
map< bool, TH1I * > dHistMap_TOFPointTrackDistance_BothPlanes
TH1I * dHist_TrackingFOM_WireBased
map< Particle_t, TH2I * > dHistMap_ThetaCVsP_DIRC
map< Particle_t, TH2I * > dHistMap_PhiVsTheta
TH2I * dEventVertexYVsX_2OrMoreGoodTracks
map< DetectorSystem_t, map< bool, TH2I * > > dHistMap_PhiVsTheta_NoHit
map< DetectorSystem_t, map< int, TH2I * > > dHistMap_dEdXVsP
map< bool, TH2I * > dHistMap_BCALDeltaZVsZ
map< bool, TH1I * > dHistMap_TrackTOFR_NoHit
unsigned int dNumPullBins
TH1D * dHist_NumNegTrackCandidates
bool Get_BestSCMatchParams(const DTrackingData *locTrack, const DDetectorMatches *locDetectorMatches, shared_ptr< const DSCHitMatchParams > &locBestMatchParams) const
TH1D * dHist_NumBCALShowers
map< bool, TH2I * > dHistMap_TOFPaddleTrackYVsVerticalPaddle_HasHit
TH1D * dHist_NumNegTrackCandidates_FDC
map< bool, TH2I * > dHistMap_TOFPointTrackDeltaXVsHorizontalPaddle
map< int, TH2I * > dHistMap_BCALEOverPVsTheta
TH2I * dHist_BCALShowerPhiVsZ
bool PredictTOFPaddles(const DReferenceTrajectory *rt, unsigned int &hbar, unsigned int &vbar, DVector3 *intersection=nullptr) const
void Initialize(JEventLoop *locEventLoop)
TH2I * dHist_NumDCHitsPerTrackVsTheta
string dTrackSelectionTag
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo=NULL)
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
TH1I * dHist_NumFDCPseudoHits
double Get_FOM(void) const
map< pair< int, bool >, TH2I * > dHistMap_FCALShowerTrackDepthVsP
unsigned int dNumShowerDepthBins
map< Particle_t, TH2I * > dHistMap_DeltaBetaVsP
unsigned int dNum2DPxyErrorBins
void Initialize(JEventLoop *locEventLoop)
unsigned int dNumShowerEnergyBins
unsigned int dNumVertexZBins
unsigned int dDIRCLikelihoodBins
void Fill_Hists(JEventLoop *locEventLoop, bool locUseTruePIDFlag)
TH1I * dEventVertexT_2OrMoreGoodTracks
unsigned int dNum2DBCALZBins
void Initialize(JEventLoop *locEventLoop)
double dDIRCMaxLikelihood
TH1D * dHist_NumTrackCandidates
map< bool, TH2I * > dHistMap_BCALDeltaPhiVsZ
map< bool, TH2I * > dHistMap_ShowerEErrorVsP
map< bool, TH2I * > dHistMap_TrackTOF2DPaddles_HasHit
deque< Particle_t > dFinalStatePIDs
unsigned int dNum2DHitEnergyBins
map< const JObject *, map< DKinFitPullType, double > > dKinFitPulls
unsigned int dNum2DThetaBins
TH1I * dEventVertexZ_AllEvents
TH1I * dHist_NumFDCCathodeHits
unsigned int dNumTrackDOCABins
map< bool, TH2I * > dHistMap_TOFPointTrackDeltaYVsHorizontalPaddle
map< DetectorSystem_t, map< bool, TH2I * > > dHistMap_PVsTheta_NoHit
TH1D * dHist_NumNegTrackCandidates_CDC
map< bool, TH1I * > dHistMap_SCPaddle_BarrelRegion_NoHit
double GetMostProbabledEdx_DC(double p, double mass, double dx, bool locIsCDCFlag) const
TH1D * dHist_NumNegTimeBasedTracks
map< pair< int, bool >, TH1I * > dHistMap_BCALShowerEnergy
unsigned int dNum2DEOverPBins
map< Particle_t, TH1I * > dHistMap_VertexT
unsigned int dNumBetaBins
DGeometry * GetDGeometry(unsigned int run_number)
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo=NULL)
unsigned int dNum2DTErrorBins
TH1D * dHist_NumTrackTOFMatches
TH1D * dHist_NumTimeBasedTracks
unsigned int dMaxNumFDCHits
TH1D * dHist_NumWireBasedTracks
shared_ptr< TMatrixFSym > dCovarianceMatrix
map< bool, TH2I * > dHistMap_TOFPointTrackDistanceVsTheta
map< bool, TH2I * > dHistMap_TrackBCALPhiVsZ_NoHit
map< DetectorSystem_t, map< Particle_t, TH2I * > > dHistMap_DeltaTVsP
const DTOFPaddleHit * Get_ClosestTOFPaddleHit_Vertical(const DReferenceTrajectory *locReferenceTrajectory, const vector< const DTOFPaddleHit * > &locTOFPaddleHits, double locInputStartTime, double &locBestDeltaX, double &locBestDistance) const
map< Particle_t, TH2I * > dHistMap_TrackZErrorVsTheta
map< bool, TH2I * > dHistMap_ShowerTErrorVsPhi
map< bool, TH2I * > dHistMap_ShowerYErrorVsPhi
unsigned int dNumThetaBins
map< bool, TH2I * > dHistMap_TrackFCALRowVsColumn_NoHit
unsigned int dNum2DDeltaPhiBins
unsigned int dNum2DFCALThetaBins
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo=NULL)
unsigned int dNumVertexXYBins
DResourcePool< DNeutralParticleHypothesis > dResourcePool_NeutralParticleHypothesis
TH1I * dEventVertexZ_2OrMoreGoodTracks
unsigned int dNumFCALTOFXYBins
TH2D * dHist_NumReconstructedParticles
unsigned int dNum2DdEdxBins
void Initialize(JEventLoop *locEventLoop)
TH2I * dHist_MCMatchedHitsVsTheta
map< Particle_t, TH1I * > dHistMap_P
DResourcePool< DChargedTrackHypothesis > dResourcePool_ChargedTrackHypothesis
TH1D * dHist_NumPosTrackCandidates
map< bool, TH1I * > dHistMap_SCPaddle_NoseRegion_HasHit
shared_ptr< const DDIRCMatchParams > Get_DIRCMatchParams(void) const
TH1D * dHist_NumPosTrackCandidates_CDC
DResourcePool< DSourceCombo > dResourcePool_SourceCombo
map< int, TH2I * > dHistMap_PVsTheta_TimeBased
map< bool, TH2I * > dHistMap_TrackFCALYVsX_NoHit
TH1D * dHist_NumTOFPoints
unsigned int dNum2DDeltadEdxBins
bool Get_IsMatchedToHit(const DTrackingData *locTrack) const
unsigned int dNum2DXYErrorBins
map< bool, TH1I * > dHistMap_TOFPointTrackDistance_OnePlane
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo=NULL)
unsigned int potential_fdc_hits_on_track
bool Get_ClosestToTrack(const DReferenceTrajectory *rt, const vector< const DBCALShower * > &locBCALShowers, bool locCutFlag, double &locStartTime, shared_ptr< const DBCALShowerMatchParams > &locBestMatchParams, double *locStartTimeVariance=nullptr, DVector3 *locBestProjPos=nullptr, DVector3 *locBestProjMom=nullptr) const
map< bool, TH2I * > dHistMap_TrackFCALRowVsColumn_HasHit
map< bool, TH2I * > dHistMap_TrackTOFYVsX_NoHit
map< bool, TH2I * > dHistMap_FCALTrackDistanceVsP
unsigned int dNum2DPhiBins
map< bool, TH2I * > dHistMap_TrackTOFYVsX_HasHit
unsigned int dMaxNumBeamPhotons
int Ndof
Number of degrees of freedom in the fit.
double charge(void) const
map< Particle_t, TH2I * > dHistMap_TrackPyErrorVsP
TH1I * dHist_NumRFSignals
DLorentzVector dSpacetimeVertex
unsigned int dNum2DDeltaBetaBins
double dSCMatchMaxDeltaPhi
DResourcePool< DEventRFBunch > dResourcePool_EventRFBunch
unsigned int dNumDeltaTBins
map< int, TH2I * > dHistMap_PVsTheta_TimeBased_LowTrackFOM
shared_ptr< const DSCHitMatchParams > Get_SCHitMatchParams(void) const
const char * SystemName(DetectorSystem_t sys)
TH1D * dHist_NumTrackFCALMatches
map< Particle_t, TH2I * > dHistMap_TrackPzErrorVsPhi
map< bool, TH1I * > dHistMap_TOFPaddleTrackDeltaX
DResourcePool< DKinFitConstraint_Spacetime > dResourcePool_SpacetimeConstraint
TH1D * dHist_NumNeutralShowers
DResourcePool< DChargedTrackHypothesis::DTimingInfo > dResourcePool_ChargedHypoTimingInfo
void Initialize(JEventLoop *locEventLoop)
map< bool, TH2I * > dHistMap_ShowerXErrorVsP
map< Particle_t, TH2I * > dHistMap_TrackPzErrorVsTheta
TH2I * dHist_TrackingFOMVsNumHits
DLorentzVector lorentzMomentum(void) const
map< int, TH2I * > dHistMap_FCALEOverPVsP
map< pair< int, bool >, TH1I * > dHistMap_FCALShowerTrackDepth
map< int, TH2I * > dHistMap_PVsTheta_WireBased
map< pair< int, bool >, TH1I * > dHistMap_FCALShowerEnergy
DResourcePool< DKinFitChainStep > dResourcePool_KinFitChainStep
shared_ptr< const DFCALShowerMatchParams > Get_FCALShowerMatchParams(void) const
DResourcePool< DKinFitParticle > dResourcePool_KinFitParticle
TH1I * dHist_FCALTrackDOCA
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo=NULL)
map< bool, TH2I * > dHistMap_BCALDeltaPhiVsP
map< pair< int, bool >, TH1I * > dHistMap_BCALShowerTrackDepth
unsigned int dNumFCALTOFXYBins
TH1I * dHist_TrackHitFraction
double dMinTOFPaddleMatchDistance
map< bool, TH2I * > dHistMap_SCPaddleVsZ_HasHit
TH2I * dHist_CDCRingVsTheta_TimeBased
map< bool, TH2I * > dHistMap_ShowerZErrorVsPhi
map< bool, TH1I * > dHistMap_TrackFCALR_NoHit
unsigned int dMaxNumEvents
DResourcePool< DChargedTrackHypothesis::DTrackingInfo > dResourcePool_ChargedHypoTrackingInfo
bool Get_CalledPriorWithComboFlag(void) const
double measuredBeta(void) const
TH1I * dHist_BCALShowerEnergy
unsigned int dNum2DHitEnergyBins
unsigned int dNum2DPhiBins
bool Get_Extrapolations(const DKinematicData *locTrack, map< DetectorSystem_t, vector< DTrackFitter::Extrapolation_t > > &extrapolations) const
DResourcePool< vector< const DSourceCombo * > > dResourcePool_SourceComboVector
size_t Get_NumTrackBCALMatches(void) const
void Initialize(JEventLoop *locEventLoop)
size_t Get_NumTrackTOFMatches(void) const
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
map< pair< int, bool >, TH2I * > dHistMap_SCPhiVsTheta
map< bool, TH2I * > dHistMap_FCALTrackDistanceVsTheta
DResourcePool< DKinematicData::DKinematicInfo > dResourcePool_KinematicInfo
TH1I * dHist_BCALTrackDeltaPhi
deque< Particle_t > dFinalStatePIDs
const DVector3 & momentum(void) const
TH2I * dHist_TrackingFOMVsP
TH1I * dHist_BCALTrackDeltaZ
map< bool, TH2I * > dHistMap_ShowerXErrorVsPhi
TH2I * dHist_FCALShowerYVsX
bool Cut_TrackHitPattern(const DParticleID *locParticleID, const DKinematicData *locTrack) const
TH1D * dHist_NumPosTimeBasedTracks
map< Particle_t, TH2I * > dHistMap_TrackXErrorVsPhi
map< int, TH2I * > dHistMap_PVsTheta_GoodWireBased_GoodTimeBased
map< Particle_t, TH2I * > dHistMap_PVsTheta
TH2I * dHist_TrackingFOMVsTheta
map< int, TH2I * > dHistMap_PVsTheta_TimeBased_GoodTrackFOM
unsigned int dNum2DEErrorBins
double dMaxTrackMatchDOCA
unsigned int dNum2DThetaBins
unsigned int dNumBeamEBins
map< DetectorSystem_t, map< bool, TH2I * > > dHistMap_PhiVsTheta_HasHit
map< bool, TH2I * > dHistMap_TrackPVsTheta_NoHitMatch
unsigned int dNumShowerEnergyBins
TH1I * dHist_NumPossDCHitsPerTrack
string dTrackSelectionTag
size_t Get_NumObjectsAllThreads(void) const
map< Particle_t, TH2I * > dHistMap_Ldiff_pkVsP_DIRC
DetectorSystem_t dTimeSource
map< bool, TH1I * > dHistMap_TrackFCALR_HasHit
TH2D * dHist_NumGoodReconstructedParticles
map< Particle_t, TH2I * > dHistMap_TrackXErrorVsP
int dNumHitsMatchedToThrown
map< bool, TH1I * > dHistMap_TrackTOFP_NoHit
string dShowerSelectionTag
TH2D * dHist_NumHighLevelObjects
double dPullHistConfidenceLevelCut
void Initialize(JEventLoop *locEventLoop)
map< Particle_t, map< DKinFitPullType, TH1I * > > dHistMap_KinFitPulls
map< DetectorSystem_t, map< Particle_t, TH2I * > > dHistMap_DeltaBetaVsP
DResourcePool< DKinFitChain > dResourcePool_KinFitChain
unsigned int dDIRCNumPhotonsBins
DResourcePool< DBeamPhoton > dResourcePool_BeamPhotons
TH2I * dHist_BCALNeutralShowerDeltaTVsE
map< Particle_t, TH2I * > dHistMap_TrackXErrorVsTheta
DResourcePool< DKinFitResults > dResourcePool_KinFitResults
unsigned int dNum2DBCALZBins
TH1I * dHist_FCALNeutralShowerDeltaT
shared_ptr< const DBCALShowerMatchParams > Get_BCALShowerMatchParams(void) const
map< bool, TH2I * > dHistMap_TrackBCALPhiVsZ_HasHit
map< Particle_t, TH2I * > dHistMap_TrackPxErrorVsTheta
DResourcePool< TMatrixFSym > dResourcePool_TMatrixFSym
map< bool, TH2I * > dHistMap_TrackTOF2DPaddles_NoHit
shared_ptr< const TMatrixFSym > errorMatrix(void) const
TH2I * dHist_TAGHRFDeltaTVsCounter
DResourcePool< DKinFitConstraint_Vertex > dResourcePool_VertexConstraint
map< bool, TH1I * > dHistMap_SCPaddle_BarrelRegion_HasHit
unsigned int dNumParticleVotes
map< bool, TH2I * > dHistMap_TOFPaddleHorizontalPaddleVsTrackX_HasHit
map< Particle_t, TH1I * > dHistMap_VertexZ
void GetScintMPdEandSigma(double p, double M, double x, double &most_prob_dE, double &sigma_dE) const
double Step_TimeToNearInputTime(double locTimeToStep, double locTimeToStepTo) const
map< bool, TH2I * > dHistMap_ShowerTErrorVsP
DResourcePool< DNeutralParticleHypothesis::DTimingInfo > dResourcePool_NeutralHypoTimingInfo
map< int, TH2I * > dHistMap_QBetaVsP
TH2I * dHist_CDCRingVsTheta_WireBased
unsigned int dNum2DFOMBins
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
unsigned int dDIRCMaxNumPhotons
map< bool, TH2I * > dHistMap_TrackBCALModuleVsZ_NoHit
map< Particle_t, TH2I * > dHistMap_TrackZErrorVsPhi
unsigned int dNum2DDeltaTBins
bool PredictBCALWedge(const DReferenceTrajectory *rt, unsigned int &module, unsigned int §or, DVector3 *intersection=nullptr) const
map< bool, TH2I * > dHistMap_ShowerXErrorVsTheta
unsigned int dNumVertexZBins
unsigned int dNum2DBCALThetaBins
map< bool, TH2I * > dHistMap_SCPaddleVsTheta_NoHit
unsigned int dMinHitPlanesPerFDCPackage
map< bool, TH1I * > dHistMap_TrackFCALP_NoHit
map< bool, TH2I * > dHistMap_TOFPaddleHorizontalPaddleVsTrackX_NoHit
bool GetTargetZ(double &z_target) const
z-location of center of target
map< int, TH2I * > dHistMap_FCALEOverPVsTheta
map< string, int > dBinMap
map< bool, TH2I * > dHistMap_ShowerEErrorVsTheta
map< Particle_t, TH2I * > dHistMap_TrackPzErrorVsP
map< bool, TH1I * > dHistMap_TrackFCALP_HasHit
void Initialize(JEventLoop *locEventLoop)
string dShowerSelectionTag
unsigned int dDIRCMinNumPhotons
DetectorSystem_t SYS_CDC_AMP
TH2I * dHist_CDCRingVsTheta_TimeBased_GoodTrackFOM
Particle_t PID(void) const
bool Get_IsMatchedToDetector(const DTrackingData *locTrack, DetectorSystem_t locDetectorSystem) const
TH1D * dHist_NumPosChargedTracks
string dTrackSelectionTag
void Fill_MatchingHists(JEventLoop *locEventLoop, bool locIsTimeBased)
unsigned int dNum2DTrackDOCABins
map< bool, TH2I * > dHistMap_ShowerEErrorVsPhi
unsigned int dNumTrackDOCABins
unsigned int dEventCounter
DResourcePool< DKinFitConstraint_P4 > dResourcePool_P4Constraint
TH1I * dHist_BCALNeutralShowerDeltaT
map< bool, TH2I * > dHistMap_BCALDeltaZVsTheta
unsigned int dNumShowerEnergyBins
void Initialize(JEventLoop *locEventLoop)
unsigned int dNum2DThetaBins
map< bool, TH2I * > dHistMap_ShowerTErrorVsTheta
map< int, TH2I * > dHistMap_BCALEOverPVsP
void Initialize(JEventLoop *locEventLoop)
map< bool, TH2I * > dHistMap_TOFPointTrackDistanceVsP
unsigned int dMaxNumTracks