32 vector<const DTrackTimeBased*> locTrackTimeBasedVector;
33 locEventLoop->Get(locTrackTimeBasedVector);
36 _data.push_back(locDetectorMatches);
44 locEventLoop->GetSingle(locParticleID);
46 vector<const DSCHit*> locSCHits;
47 locEventLoop->Get(locSCHits);
49 vector<const DTOFPoint*> locTOFPoints;
50 locEventLoop->Get(locTOFPoints);
52 vector<const DFCALShower*> locFCALShowers;
53 locEventLoop->Get(locFCALShowers);
55 vector<const DBCALShower*> locBCALShowers;
56 locEventLoop->Get(locBCALShowers);
58 vector<const DDIRCPmtHit*> locDIRCHits;
59 locEventLoop->Get(locDIRCHits);
62 vector<const DDIRCTruthBarHit*> locDIRCBarHits;
63 locEventLoop->Get(locDIRCBarHits);
68 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
70 MatchToBCAL(locParticleID, locTrackTimeBasedVector[loc_i], locBCALShowers, locDetectorMatches);
71 MatchToTOF(locParticleID, locTrackTimeBasedVector[loc_i], locTOFPoints, locDetectorMatches);
72 MatchToFCAL(locParticleID, locTrackTimeBasedVector[loc_i], locFCALShowers, locDetectorMatches);
73 MatchToSC(locParticleID, locTrackTimeBasedVector[loc_i], locSCHits, locDetectorMatches);
74 MatchToDIRC(locParticleID, locTrackTimeBasedVector[loc_i], locDIRCHits, locDetectorMatches, locDIRCBarHits);
78 for(
size_t loc_i = 0; loc_i < locBCALShowers.size(); ++loc_i)
79 MatchToTrack(locParticleID, locBCALShowers[loc_i], locTrackTimeBasedVector, locDetectorMatches);
80 for(
size_t loc_i = 0; loc_i < locFCALShowers.size(); ++loc_i)
81 MatchToTrack(locParticleID, locFCALShowers[loc_i], locTrackTimeBasedVector, locDetectorMatches);
84 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
87 if(isfinite(locFlightTimePCorrelation))
91 if(isfinite(locFlightTimePCorrelation))
95 if(isfinite(locFlightTimePCorrelation))
99 if(isfinite(locFlightTimePCorrelation))
103 return locDetectorMatches;
109 if (extrapolations.size()==0)
return;
111 double locInputStartTime = locTrackTimeBased->
t0();
112 for(
size_t loc_i = 0; loc_i < locBCALShowers.size(); ++loc_i)
114 shared_ptr<DBCALShowerMatchParams> locShowerMatchParams;
115 if(locParticleID->
Cut_MatchDistance(extrapolations, locBCALShowers[loc_i], locInputStartTime, locShowerMatchParams))
116 locDetectorMatches->
Add_Match(locTrackTimeBased, locBCALShowers[loc_i], locShowerMatchParams);
123 if (extrapolations.size()==0)
return;
125 double locInputStartTime = locTrackTimeBased->
t0();
126 for(
size_t loc_i = 0; loc_i < locTOFPoints.size(); ++loc_i)
128 shared_ptr<DTOFHitMatchParams> locTOFHitMatchParams;
129 if(locParticleID->
Cut_MatchDistance(extrapolations, locTOFPoints[loc_i], locInputStartTime, locTOFHitMatchParams))
130 locDetectorMatches->
Add_Match(locTrackTimeBased, locTOFPoints[loc_i], locTOFHitMatchParams);
137 if (extrapolations.size()==0)
return;
139 double locInputStartTime = locTrackTimeBased->
t0();
140 for(
size_t loc_i = 0; loc_i < locFCALShowers.size(); ++loc_i)
142 shared_ptr<DFCALShowerMatchParams>locShowerMatchParams;
143 if(locParticleID->
Cut_MatchDistance(extrapolations, locFCALShowers[loc_i], locInputStartTime, locShowerMatchParams))
144 locDetectorMatches->
Add_Match(locTrackTimeBased, locFCALShowers[loc_i], locShowerMatchParams);
151 if (extrapolations.size()==0)
return;
153 double locInputStartTime = locTrackTimeBased->
t0();
154 for(
size_t loc_i = 0; loc_i < locSCHits.size(); ++loc_i)
156 shared_ptr<DSCHitMatchParams>locSCHitMatchParams;
157 if(locParticleID->
Cut_MatchDistance(extrapolations, locSCHits[loc_i], locInputStartTime, locSCHitMatchParams,
true))
158 locDetectorMatches->
Add_Match(locTrackTimeBased, locSCHits[loc_i], locSCHitMatchParams);
165 if(extrapolations.size()==0)
return;
167 double locInputStartTime = locTrackTimeBased->
t0();
170 shared_ptr<DDIRCMatchParams> locDIRCMatchParams;
171 map<shared_ptr<const DDIRCMatchParams>, vector<const DDIRCPmtHit*> > locDIRCTrackMatchParams;
175 if(locParticleID->
Cut_MatchDIRC(extrapolations, locDIRCHits, locInputStartTime, locTrackTimeBased->
PID(), locDIRCMatchParams, locDIRCBarHits, locDIRCTrackMatchParams))
176 locDetectorMatches->
Add_Match(locTrackTimeBased, locDIRCMatchParams);
181 double locMinDistance = 999.0;
182 double locFinalDeltaPhi = 999.0, locFinalDeltaZ = 999.0;
183 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
185 shared_ptr<DBCALShowerMatchParams> locShowerMatchParams;
186 double locInputStartTime = locTrackTimeBasedVector[loc_i]->t0();
188 map<DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >extrapolations=locTrackTimeBasedVector[loc_i]->extrapolations;
189 if (extrapolations.size()==0)
continue;
191 if(!locParticleID->
Distance_ToTrack(extrapolations.at(
SYS_BCAL), locBCALShower, locInputStartTime, locShowerMatchParams))
194 double locRSq = locBCALShower->
x*locBCALShower->
x + locBCALShower->
y*locBCALShower->
y;
195 double locDeltaPhi = locShowerMatchParams->dDeltaPhiToShower;
196 double locDeltaZ = locShowerMatchParams->dDeltaZToShower;
197 double locDistance =
sqrt(locDeltaZ*locDeltaZ + locDeltaPhi*locDeltaPhi*locRSq);
198 if(locDistance >= locMinDistance)
201 locMinDistance = locDistance;
202 locFinalDeltaPhi = locDeltaPhi;
203 locFinalDeltaZ = locDeltaZ;
210 double locMinDistance = 999.0;
211 for(
size_t loc_i = 0; loc_i < locTrackTimeBasedVector.size(); ++loc_i)
213 map<DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >extrapolations=locTrackTimeBasedVector[loc_i]->extrapolations;
214 if (extrapolations.size()==0)
return;
216 shared_ptr<DFCALShowerMatchParams> locShowerMatchParams;
217 double locInputStartTime = locTrackTimeBasedVector[loc_i]->t0();
218 if(!locParticleID->
Distance_ToTrack(extrapolations.at(
SYS_FCAL), locFCALShower, locInputStartTime, locShowerMatchParams))
220 if(locShowerMatchParams->dDOCAToShower < locMinDistance)
221 locMinDistance = locShowerMatchParams->dDOCAToShower;
void MatchToTOF(const DParticleID *locParticleID, const DTrackTimeBased *locTrackTimeBased, const vector< const DTOFPoint * > &locTOFPoints, DDetectorMatches *locDetectorMatches) const
bool Get_DIRCTrackMatchParamsMap(map< shared_ptr< const DDIRCMatchParams >, vector< const DDIRCPmtHit * > > &locDIRCTrackMatchParamsMap)
bool Cut_MatchDIRC(const vector< DTrackFitter::Extrapolation_t > &extrapolations, const vector< const DDIRCPmtHit * > locDIRCHits, double locInputStartTime, Particle_t locPID, shared_ptr< DDIRCMatchParams > &locDIRCMatchParams, const vector< const DDIRCTruthBarHit * > locDIRCBarHits, map< shared_ptr< const DDIRCMatchParams >, vector< const DDIRCPmtHit * > > &locDIRCTrackMatchParams, DVector3 *locOutputProjPos=nullptr, DVector3 *locOutputProjMom=nullptr) const
double Calc_SCFlightTimePCorrelation(const DTrackingData *locTrack, const DDetectorMatches *locDetectorMatches) const
void Add_Match(const DTrackingData *locTrack, const DBCALShower *locBCALShower, const shared_ptr< const DBCALShowerMatchParams > &locShowerMatchParams)
double Calc_TOFFlightTimePCorrelation(const DTrackingData *locTrack, DDetectorMatches *locDetectorMatches) const
double Calc_FCALFlightTimePCorrelation(const DTrackingData *locTrack, DDetectorMatches *locDetectorMatches) const
double Calc_BCALFlightTimePCorrelation(const DTrackingData *locTrack, DDetectorMatches *locDetectorMatches) const
void Set_DistanceToNearestTrack(const DBCALShower *locBCALShower, double locDeltaPhi, double locDeltaZ)
DDetectorMatches * Create_DDetectorMatches(jana::JEventLoop *locEventLoop, vector< const DTrackTimeBased * > &locTrackTimeBasedVector)
jerror_t init(void)
Called once at program start.
void MatchToDIRC(const DParticleID *locParticleID, const DTrackTimeBased *locTrackTimeBased, const vector< const DDIRCPmtHit * > &locDIRCHits, DDetectorMatches *locDetectorMatches, const vector< const DDIRCTruthBarHit * > &locDIRCBarHits) const
bool Cut_MatchDistance(const DReferenceTrajectory *rt, const DBCALShower *locBCALShower, double locInputStartTime, shared_ptr< DBCALShowerMatchParams > &locShowerMatchParams, DVector3 *locOutputProjPos=nullptr, DVector3 *locOutputProjMom=nullptr) const
jerror_t evnt(jana::JEventLoop *locEventLoop, uint64_t eventnumber)
Called every event.
void MatchToFCAL(const DParticleID *locParticleID, const DTrackTimeBased *locTrackTimeBased, const vector< const DFCALShower * > &locFCALShowers, DDetectorMatches *locDetectorMatches) const
void MatchToBCAL(const DParticleID *locParticleID, const DTrackTimeBased *locTrackTimeBased, const vector< const DBCALShower * > &locBCALShowers, DDetectorMatches *locDetectorMatches) const
void MatchToTrack(const DParticleID *locParticleID, const DBCALShower *locBCALShower, const vector< const DTrackTimeBased * > &locTrackTimeBasedVector, DDetectorMatches *locDetectorMatches) const
jerror_t brun(jana::JEventLoop *locEventLoop, int32_t runnumber)
Called everytime a new run number is detected.
map< DetectorSystem_t, vector< DTrackFitter::Extrapolation_t > > extrapolations
bool Distance_ToTrack(const DReferenceTrajectory *rt, const DFCALShower *locFCALShower, double locInputStartTime, shared_ptr< DFCALShowerMatchParams > &locShowerMatchParams, DVector3 *locOutputProjPos=nullptr, DVector3 *locOutputProjMom=nullptr) const
void Set_FlightTimePCorrelation(const DTrackingData *locTrack, DetectorSystem_t locDetectorSystem, double locCorrelation)
Particle_t PID(void) const
void MatchToSC(const DParticleID *locParticleID, const DTrackTimeBased *locTrackTimeBased, const vector< const DSCHit * > &locSCHits, DDetectorMatches *locDetectorMatches) const