8 #ifndef _DDetectorMatches_
9 #define _DDetectorMatches_
30 dx(0.0), dFlightTime(0.0), dFlightTimeVariance(0.0), dPathLength(0.0), dDeltaPhiToShower(0.0), dDeltaPhiToShowerCut(0.0),dDeltaZToShower(0.0){}
44 double locRSq = dBCALShower->x*dBCALShower->x + dBCALShower->y*dBCALShower->y;
45 return sqrt(dDeltaZToShower*dDeltaZToShower + dDeltaPhiToShower*dDeltaPhiToShower*locRSq);
53 dx(0.0), dFlightTime(0.0), dFlightTimeVariance(0.0), dPathLength(0.0), dDOCAToShower(0.0){}
68 dHitTime(0.0), dHitTimeVariance(0.0), dHitEnergy(0.0), dEdx(0.0), dFlightTime(0.0), dFlightTimeVariance(0.0),
69 dPathLength(0.0), dDeltaXToHit(0.0), dDeltaYToHit(0.0){}
86 return sqrt(dDeltaXToHit*dDeltaXToHit + dDeltaYToHit*dDeltaYToHit);
94 dHitEnergy(0.0), dEdx(0.0), dFlightTime(0.0), dFlightTimeVariance(0.0), dPathLength(0.0), dDeltaPhiToHit(0.0){}
112 DDIRCMatchParams(
void) : dExpectedThetaC(0.0), dThetaC(0.0), dDeltaT(0.0), dLikelihoodElectron(0.0), dLikelihoodPion(0.0), dLikelihoodKaon(0.0), dLikelihoodProton(0.0), dNPhotons(0), dExtrapolatedPos(0,0,0), dExtrapolatedMom(0,0,0){}
127 inline bool Get_BCALMatchParams(
const DTrackingData* locTrack, vector<shared_ptr<const DBCALShowerMatchParams> >& locMatchParams)
const;
128 inline bool Get_FCALMatchParams(
const DTrackingData* locTrack, vector<shared_ptr<const DFCALShowerMatchParams> >& locMatchParams)
const;
129 inline bool Get_TOFMatchParams(
const DTrackingData* locTrack, vector<shared_ptr<const DTOFHitMatchParams> >& locMatchParams)
const;
130 inline bool Get_SCMatchParams(
const DTrackingData* locTrack, vector<shared_ptr<const DSCHitMatchParams> >& locMatchParams)
const;
131 inline bool Get_DIRCMatchParams(
const DTrackingData* locTrack, shared_ptr<const DDIRCMatchParams>& locMatchParams)
const;
133 inline bool Get_IsMatchedToTrack(
const DBCALShower* locBCALShower)
const;
134 inline bool Get_IsMatchedToTrack(
const DFCALShower* locFCALShower)
const;
135 inline bool Get_IsMatchedToHit(
const DTrackingData* locTrack)
const;
138 inline bool Get_TrackMatchParams(
const DBCALShower* locBCALShower, vector<shared_ptr<const DBCALShowerMatchParams> >& locMatchParams)
const;
139 inline bool Get_TrackMatchParams(
const DFCALShower* locFCALShower, vector<shared_ptr<const DFCALShowerMatchParams> >& locMatchParams)
const;
140 inline bool Get_TrackMatchParams(
const DTOFPoint* locTOFPoint, vector<shared_ptr<const DTOFHitMatchParams> >& locMatchParams)
const;
141 inline bool Get_TrackMatchParams(
const DSCHit* locSCHit, vector<shared_ptr<const DSCHitMatchParams> >& locMatchParams)
const;
142 inline bool Get_DIRCTrackMatchParamsMap(map<shared_ptr<const DDIRCMatchParams>, vector<const DDIRCPmtHit*> >& locDIRCTrackMatchParamsMap);
144 inline bool Get_DistanceToNearestTrack(
const DBCALShower* locBCALShower,
double& locDistance)
const;
145 inline bool Get_DistanceToNearestTrack(
const DBCALShower* locBCALShower,
double& locDeltaPhi,
double& locDeltaZ)
const;
146 inline bool Get_DistanceToNearestTrack(
const DFCALShower* locFCALShower,
double& locDistance)
const;
151 inline size_t Get_NumTrackBCALMatches(
void)
const;
152 inline size_t Get_NumTrackFCALMatches(
void)
const;
153 inline size_t Get_NumTrackTOFMatches(
void)
const;
154 inline size_t Get_NumTrackSCMatches(
void)
const;
155 inline size_t Get_NumTrackDIRCMatches(
void)
const;
158 inline void Add_Match(
const DTrackingData* locTrack,
const DBCALShower* locBCALShower,
const shared_ptr<const DBCALShowerMatchParams>& locShowerMatchParams);
159 inline void Add_Match(
const DTrackingData* locTrack,
const DFCALShower* locFCALShower,
const shared_ptr<const DFCALShowerMatchParams>& locShowerMatchParams);
160 inline void Add_Match(
const DTrackingData* locTrack,
const DTOFPoint* locTOFPoint,
const shared_ptr<const DTOFHitMatchParams>& locHitMatchParams);
161 inline void Add_Match(
const DTrackingData* locTrack,
const DSCHit* locSCHit,
const shared_ptr<const DSCHitMatchParams>& locHitMatchParams);
162 inline void Add_Match(
const DTrackingData* locTrack,
const shared_ptr<const DDIRCMatchParams>& locDIRCMatchParams);
163 inline void Set_DistanceToNearestTrack(
const DBCALShower* locBCALShower,
double locDeltaPhi,
double locDeltaZ);
164 inline void Set_DistanceToNearestTrack(
const DFCALShower* locFCALShower,
double locDistanceToNearestTrack);
167 void toStrings(vector<pair<string,string> >& items)
const
169 AddString(items,
"#_Track_BCAL_Matches",
"%d", Get_NumTrackBCALMatches());
170 AddString(items,
"#_Track_FCAL_Matches",
"%d", Get_NumTrackFCALMatches());
171 AddString(items,
"#_Track_TOF_Matches",
"%d", Get_NumTrackTOFMatches());
172 AddString(items,
"#_Track_SC_Matches",
"%d", Get_NumTrackSCMatches());
173 AddString(items,
"#_Track_DIRC_Matches",
"%d", Get_NumTrackDIRCMatches());
203 locMatchParams.clear();
204 auto locIterator = dTrackBCALMatchParams.find(locTrack);
205 if(locIterator == dTrackBCALMatchParams.end())
207 locMatchParams = locIterator->second;
213 locMatchParams.clear();
214 auto locIterator = dTrackFCALMatchParams.find(locTrack);
215 if(locIterator == dTrackFCALMatchParams.end())
217 locMatchParams = locIterator->second;
223 locMatchParams.clear();
224 auto locIterator = dTrackTOFMatchParams.find(locTrack);
225 if(locIterator == dTrackTOFMatchParams.end())
227 locMatchParams = locIterator->second;
233 locMatchParams.clear();
234 auto locIterator = dTrackSCMatchParams.find(locTrack);
235 if(locIterator == dTrackSCMatchParams.end())
237 locMatchParams = locIterator->second;
243 auto locIterator = dTrackDIRCMatchParams.find(locTrack);
244 if(locIterator == dTrackDIRCMatchParams.end())
246 locMatchParams = locIterator->second;
252 return (dBCALTrackMatchParams.find(locBCALShower) != dBCALTrackMatchParams.end());
257 return (dFCALTrackMatchParams.find(locFCALShower) != dFCALTrackMatchParams.end());
262 if(dTrackBCALMatchParams.find(locTrack) != dTrackBCALMatchParams.end())
264 if(dTrackFCALMatchParams.find(locTrack) != dTrackFCALMatchParams.end())
266 if(dTrackTOFMatchParams.find(locTrack) != dTrackTOFMatchParams.end())
268 if(dTrackSCMatchParams.find(locTrack) != dTrackSCMatchParams.end())
276 return (dTrackBCALMatchParams.find(locTrack) != dTrackBCALMatchParams.end());
277 else if(locDetectorSystem ==
SYS_FCAL)
278 return (dTrackFCALMatchParams.find(locTrack) != dTrackFCALMatchParams.end());
279 else if(locDetectorSystem ==
SYS_TOF)
280 return (dTrackTOFMatchParams.find(locTrack) != dTrackTOFMatchParams.end());
282 return (dTrackSCMatchParams.find(locTrack) != dTrackSCMatchParams.end());
289 locMatchParams.clear();
290 auto locIterator = dBCALTrackMatchParams.find(locBCALShower);
291 if(locIterator == dBCALTrackMatchParams.end())
293 locMatchParams = locIterator->second;
299 locMatchParams.clear();
300 auto locIterator = dFCALTrackMatchParams.find(locFCALShower);
301 if(locIterator == dFCALTrackMatchParams.end())
303 locMatchParams = locIterator->second;
309 locMatchParams.clear();
310 auto locIterator = dTOFTrackMatchParams.find(locTOFPoint);
311 if(locIterator == dTOFTrackMatchParams.end())
313 locMatchParams = locIterator->second;
319 locMatchParams.clear();
320 auto locIterator = dSCTrackMatchParams.find(locSCHit);
321 if(locIterator == dSCTrackMatchParams.end())
323 locMatchParams = locIterator->second;
329 locDIRCTrackMatchParamsMap = dDIRCTrackMatchParams;
335 double locDeltaPhi, locDeltaZ;
336 if(!Get_DistanceToNearestTrack(locBCALShower, locDeltaPhi, locDeltaZ))
338 double locRSq = locBCALShower->
x*locBCALShower->
x + locBCALShower->
y*locBCALShower->
y;
339 locDistance =
sqrt(locDeltaZ*locDeltaZ + locDeltaPhi*locDeltaPhi*locRSq);
345 auto locIterator = dBCALShowerDistanceToNearestTrack.find(locBCALShower);
346 if(locIterator == dBCALShowerDistanceToNearestTrack.end())
348 locDeltaPhi = locIterator->second.first;
349 locDeltaZ = locIterator->second.second;
355 auto locIterator = dFCALShowerDistanceToNearestTrack.find(locFCALShower);
356 if(locIterator == dFCALShowerDistanceToNearestTrack.end())
358 locDistance = locIterator->second;
364 auto locTrackIterator = dFlightTimePCorrelations.find(locTrack);
365 if(locTrackIterator == dFlightTimePCorrelations.end())
367 const map<DetectorSystem_t, double>& locDetectorMap = locTrackIterator->second;
368 map<DetectorSystem_t, double>::const_iterator locDetectorIterator = locDetectorMap.find(locDetectorSystem);
369 if(locDetectorIterator == locDetectorMap.end())
371 locCorrelation = locDetectorIterator->second;
378 auto locIterator = dTrackBCALMatchParams.begin();
379 unsigned int locNumTrackMatches = 0;
380 for(; locIterator != dTrackBCALMatchParams.end(); ++locIterator)
381 locNumTrackMatches += locIterator->second.size();
382 return locNumTrackMatches;
387 auto locIterator = dTrackFCALMatchParams.begin();
388 unsigned int locNumTrackMatches = 0;
389 for(; locIterator != dTrackFCALMatchParams.end(); ++locIterator)
390 locNumTrackMatches += locIterator->second.size();
391 return locNumTrackMatches;
396 auto locIterator = dTrackTOFMatchParams.begin();
397 unsigned int locNumTrackMatches = 0;
398 for(; locIterator != dTrackTOFMatchParams.end(); ++locIterator)
399 locNumTrackMatches += locIterator->second.size();
400 return locNumTrackMatches;
405 auto locIterator = dTrackSCMatchParams.begin();
406 unsigned int locNumTrackMatches = 0;
407 for(; locIterator != dTrackSCMatchParams.end(); ++locIterator)
408 locNumTrackMatches += locIterator->second.size();
409 return locNumTrackMatches;
414 return dTrackDIRCMatchParams.size();
420 dTrackBCALMatchParams[locTrack].push_back(locShowerMatchParams);
421 dBCALTrackMatchParams[locBCALShower].push_back(locShowerMatchParams);
425 dTrackFCALMatchParams[locTrack].push_back(locShowerMatchParams);
426 dFCALTrackMatchParams[locFCALShower].push_back(locShowerMatchParams);
430 dTrackTOFMatchParams[locTrack].push_back(locHitMatchParams);
431 dTOFTrackMatchParams[locTOFPoint].push_back(locHitMatchParams);
435 dTrackSCMatchParams[locTrack].push_back(locHitMatchParams);
436 dSCTrackMatchParams[locSCHit].push_back(locHitMatchParams);
440 dTrackDIRCMatchParams[locTrack] = locHitMatchParams;
444 dBCALShowerDistanceToNearestTrack[locBCALShower] = pair<double, double>(locDeltaPhi, locDeltaZ);
448 dFCALShowerDistanceToNearestTrack[locFCALShower] = locDistanceToNearestTrack;
452 dFlightTimePCorrelations[locTrack][locDetectorSystem] = locCorrelation;
455 #endif // _DDetectorMatches_
double dFlightTimeVariance
map< const DTrackingData *, vector< shared_ptr< const DTOFHitMatchParams > > > dTrackTOFMatchParams
bool Get_DistanceToNearestTrack(const DBCALShower *locBCALShower, double &locDistance) const
void toStrings(vector< pair< string, string > > &items) const
bool Get_TOFMatchParams(const DTrackingData *locTrack, vector< shared_ptr< const DTOFHitMatchParams > > &locMatchParams) const
bool Get_DIRCTrackMatchParamsMap(map< shared_ptr< const DDIRCMatchParams >, vector< const DDIRCPmtHit * > > &locDIRCTrackMatchParamsMap)
bool Get_SCMatchParams(const DTrackingData *locTrack, vector< shared_ptr< const DSCHitMatchParams > > &locMatchParams) const
map< const DTrackingData *, vector< shared_ptr< const DBCALShowerMatchParams > > > dTrackBCALMatchParams
DVector3 dExtrapolatedPos
DFCALShowerMatchParams(void)
bool Get_FCALMatchParams(const DTrackingData *locTrack, vector< shared_ptr< const DFCALShowerMatchParams > > &locMatchParams) const
map< const DSCHit *, vector< shared_ptr< const DSCHitMatchParams > > > dSCTrackMatchParams
map< const DTOFPoint *, vector< shared_ptr< const DTOFHitMatchParams > > > dTOFTrackMatchParams
size_t Get_NumTrackFCALMatches(void) const
size_t Get_NumTrackSCMatches(void) const
double dFlightTimeVariance
map< shared_ptr< const DDIRCMatchParams >, vector< const DDIRCPmtHit * > > dDIRCTrackMatchParams
map< const DTrackingData *, shared_ptr< const DDIRCMatchParams > > dTrackDIRCMatchParams
void Add_Match(const DTrackingData *locTrack, const DBCALShower *locBCALShower, const shared_ptr< const DBCALShowerMatchParams > &locShowerMatchParams)
map< const DFCALShower *, vector< shared_ptr< const DFCALShowerMatchParams > > > dFCALTrackMatchParams
map< const DTrackingData *, vector< shared_ptr< const DSCHitMatchParams > > > dTrackSCMatchParams
void Set_DistanceToNearestTrack(const DBCALShower *locBCALShower, double locDeltaPhi, double locDeltaZ)
bool Get_FlightTimePCorrelation(const DTrackingData *locTrack, DetectorSystem_t locDetectorSystem, double &locCorrelation) const
map< const DTrackingData *, vector< shared_ptr< const DFCALShowerMatchParams > > > dTrackFCALMatchParams
bool Get_IsMatchedToHit(const DTrackingData *locTrack) const
const DFCALShower * dFCALShower
double dFlightTimeVariance
map< const DBCALShower *, vector< shared_ptr< const DBCALShowerMatchParams > > > dBCALTrackMatchParams
bool Get_DIRCMatchParams(const DTrackingData *locTrack, shared_ptr< const DDIRCMatchParams > &locMatchParams) const
const DTOFPoint * dTOFPoint
double Get_DistanceToTrack(void) const
bool Get_BCALMatchParams(const DTrackingData *locTrack, vector< shared_ptr< const DBCALShowerMatchParams > > &locMatchParams) const
size_t Get_NumTrackBCALMatches(void) const
size_t Get_NumTrackTOFMatches(void) const
double dDeltaPhiToShowerCut
double Get_DistanceToTrack(void) const
DBCALShowerMatchParams(void)
map< const DBCALShower *, pair< double, double > > dBCALShowerDistanceToNearestTrack
map< const DFCALShower *, double > dFCALShowerDistanceToNearestTrack
double dFlightTimeVariance
bool Get_TrackMatchParams(const DBCALShower *locBCALShower, vector< shared_ptr< const DBCALShowerMatchParams > > &locMatchParams) const
size_t Get_NumTrackDIRCMatches(void) const
void Set_FlightTimePCorrelation(const DTrackingData *locTrack, DetectorSystem_t locDetectorSystem, double locCorrelation)
bool Get_IsMatchedToDetector(const DTrackingData *locTrack, DetectorSystem_t locDetectorSystem) const
const DBCALShower * dBCALShower
map< const DTrackingData *, map< DetectorSystem_t, double > > dFlightTimePCorrelations
bool Get_IsMatchedToTrack(const DBCALShower *locBCALShower) const