9 #ifndef TRACK_CREATOR_H
10 #define TRACK_CREATOR_H 1
14 #include "IMPL/LCCollectionVec.h"
15 #include "IMPL/LCFlagImpl.h"
17 #include "EVENT/LCEvent.h"
18 #include "EVENT/Track.h"
20 #include "Api/PandoraApi.h"
21 #include "Objects/Helix.h"
23 typedef std::vector<Track *> TrackVector;
24 typedef std::set<const Track *> TrackList;
25 typedef std::map<Track *, int> TrackToPidMap;
27 inline LCCollectionVec *newTrkCol(
const std::string &name, LCEvent *evt ,
bool isSubset)
29 LCCollectionVec* col =
new LCCollectionVec( LCIO::TRACK ) ;
31 LCFlagImpl hitFlag(0) ;
32 hitFlag.setBit( LCIO::TRBIT_HITS ) ;
33 col->setFlag( hitFlag.getFlag() ) ;
34 evt->addCollection( col , name ) ;
35 col->setSubset( isSubset ) ;
48 typedef std::vector<double> DoubleVector;
49 typedef std::vector<std::string> StringVector;
130 pandora::StatusCode
CreateTracks(EVENT::LCEvent *pLCEvent);
150 pandora::StatusCode ExtractKinks(
const EVENT::LCEvent *
const pLCEvent);
157 pandora::StatusCode ExtractProngsAndSplits(
const EVENT::LCEvent *
const pLCEvent);
164 pandora::StatusCode ExtractV0s(
const EVENT::LCEvent *
const pLCEvent);
171 bool IsConflictingRelationship(
const EVENT::TrackVec &trackVec)
const;
180 bool IsV0(
const EVENT::Track *
const pTrack)
const;
189 bool IsParent(
const EVENT::Track *
const pTrack)
const;
198 bool IsDaughter(
const EVENT::Track *
const pTrack)
const;
206 void GetTrackStates(
const EVENT::Track *
const pTrack, PandoraApi::Track::Parameters &trackParameters)
const;
214 void CopyTrackState(
const TrackState *
const pTrackState, pandora::InputTrackState &inputTrackState)
const;
221 float CalculateTrackTimeAtCalorimeter(
const EVENT::Track *
const pTrack)
const;
229 void TrackReachesECAL(
const EVENT::Track *
const pTrack, PandoraApi::Track::Parameters &trackParameters)
const;
239 void DefineTrackPfoUsage(
const EVENT::Track *
const pTrack, PandoraApi::Track::Parameters &trackParameters)
const;
249 bool PassesQualityCuts(
const EVENT::Track *
const pTrack,
const PandoraApi::Track::Parameters &trackParameters)
const;
258 int GetNTpcHits(
const EVENT::Track *
const pTrack)
const;
267 int GetNFtdHits(
const EVENT::Track *
const pTrack)
const;
270 const pandora::Pandora *m_pPandora;
272 const float m_bField;
274 const float m_tpcInnerR;
275 const float m_tpcOuterR;
276 const unsigned int m_tpcMaxRow;
277 const float m_tpcZmax;
280 DoubleVector m_ftdInnerRadii;
281 DoubleVector m_ftdOuterRadii;
282 DoubleVector m_ftdZPositions;
283 unsigned int m_nFtdLayers;
284 float m_tanLambdaFtd;
286 const int m_eCalBarrelInnerSymmetry;
287 const float m_eCalBarrelInnerPhi0;
288 const float m_eCalBarrelInnerR;
289 const float m_eCalEndCapInnerZ;
291 float m_minEtdZPosition;
292 float m_minSetRadius;
294 TrackVector m_trackVector;
295 TrackList m_v0TrackList;
296 TrackList m_parentTrackList;
297 TrackList m_daughterTrackList;
298 TrackToPidMap m_trackToPidMap;
305 return m_trackVector;
312 m_trackVector.clear();
313 m_v0TrackList.clear();
314 m_parentTrackList.clear();
315 m_daughterTrackList.clear();
316 m_trackToPidMap.clear();
321 inline bool TrackCreator::IsV0(
const Track *
const pTrack)
const
323 return (m_v0TrackList.end() != m_v0TrackList.find(pTrack));
328 inline bool TrackCreator::IsParent(
const Track *
const pTrack)
const
330 return (m_parentTrackList.end() != m_parentTrackList.find(pTrack));
335 inline bool TrackCreator::IsDaughter(
const Track *
const pTrack)
const
337 return (m_daughterTrackList.end() != m_daughterTrackList.find(pTrack));
340 #endif // #ifndef TRACK_CREATOR_H
float m_d0UnmatchedVertexTrackCut
d0 cut used to determine whether unmatched vertex track can form pfo
Definition: TrackCreator.h:83
float m_z0UnmatchedVertexTrackCut
z0 cut used to determine whether unmatched vertex track can form pfo
Definition: TrackCreator.h:84
TrackCreator(const Settings &settings, const pandora::Pandora *const pPandora)
Constructor.
Definition: TrackCreator.cc:32
int m_usingNonVertexTracks
Whether can form pfos from tracks that don't start at vertex.
Definition: TrackCreator.h:78
TrackCreator class.
Definition: TrackCreator.h:45
Settings()
Default constructor.
Definition: TrackCreator.cc:892
float m_d0TrackCut
Track d0 cut used to determine whether track can be used to form pfo.
Definition: TrackCreator.h:75
const TrackVector & GetTrackVector() const
Get the track vector.
Definition: TrackCreator.h:303
Settings class.
Definition: TrackCreator.h:54
StringVector m_v0VertexCollections
The v0 vertex collections.
Definition: TrackCreator.h:66
StringVector m_splitVertexCollections
The split vertex collections.
Definition: TrackCreator.h:65
StringVector m_prongSplitVertexCollections
Concatenated list of prong and split vertex collections.
Definition: TrackCreator.h:68
void Reset()
Reset the track creator.
Definition: TrackCreator.h:310
StringVector m_trackCollections
The reconstructed track collections.
Definition: TrackCreator.h:62
float m_minTrackECalDistanceFromIp
Sanity check on separation between ip and track projected ecal position.
Definition: TrackCreator.h:95
float m_unmatchedVertexTrackMaxEnergy
Maximum energy for unmatched vertex track.
Definition: TrackCreator.h:81
float m_maxTrackSigmaPOverP
Track fraction momentum error cut.
Definition: TrackCreator.h:96
int m_reachesECalMinFtdLayer
Min layer in Ftd for tracks to be considered to have reached decal.
Definition: TrackCreator.h:90
int m_usingUnmatchedVertexTracks
Whether can form pfos from unmatched tracks that start at vertex.
Definition: TrackCreator.h:80
int m_reachesECalNFtdHits
Minimum number of ftd hits to consider track as reaching ecal.
Definition: TrackCreator.h:88
int m_reachesECalNTpcHits
Minimum number of tpc hits to consider track as reaching ecal.
Definition: TrackCreator.h:87
float m_reachesECalTpcOuterDistance
Max distance from track to tpc r max to id whether track reaches ecal.
Definition: TrackCreator.h:89
float m_zCutForNonVertexTracks
Non vtx track z cut to determine whether track can be used to form pfo.
Definition: TrackCreator.h:85
int m_minFtdTrackHits
Track quality cut: the minimum number of FTD track hits for FTD only tracks.
Definition: TrackCreator.h:72
int m_usingUnmatchedNonVertexTracks
Whether can form pfos from unmatched tracks that don't start at vertex.
Definition: TrackCreator.h:79
int m_minFtdHitsForTpcHitFraction
Minimum number of FTD hits to ignore TPC hit fraction.
Definition: TrackCreator.h:102
float m_minMomentumForTrackHitChecks
Min track momentum required to perform final quality checks on number of hits.
Definition: TrackCreator.h:97
float m_reachesECalFtdZMaxDistance
Max distance from track hit to ftd z position to identify ftd hits.
Definition: TrackCreator.h:92
float m_maxTpcInnerRDistance
Track cut on distance from tpc inner r to id whether track can form pfo.
Definition: TrackCreator.h:100
float m_reachesECalTpcZMaxDistance
Max distance from track to tpc z max to id whether track reaches ecal.
Definition: TrackCreator.h:91
float m_minTpcHitFractionOfExpected
Minimum fraction of TPC hits compared to expected.
Definition: TrackCreator.h:101
int m_minTrackHits
Track quality cut: the minimum number of track hits.
Definition: TrackCreator.h:71
int m_shouldFormTrackRelationships
Whether to form pandora track relationships using v0 and kink info.
Definition: TrackCreator.h:69
StringVector m_prongVertexCollections
The prong vertex collections.
Definition: TrackCreator.h:64
float m_z0TrackCut
Track z0 cut used to determine whether track can be used to form pfo.
Definition: TrackCreator.h:76
float m_tpcMembraneMaxZ
Tpc membrane max z coordinate.
Definition: TrackCreator.h:99
pandora::StatusCode CreateTrackAssociations(const EVENT::LCEvent *const pLCEvent)
Create associations between tracks, V0s, kinks, etc.
Definition: TrackCreator.cc:131
pandora::StatusCode CreateTracks(EVENT::LCEvent *pLCEvent)
Create tracks, insert user code here.
Definition: TrackCreator.cc:421
~TrackCreator()
Destructor.
Definition: TrackCreator.cc:125
int m_maxTrackHits
Track quality cut: the maximum number of track hits.
Definition: TrackCreator.h:73
float m_curvatureToMomentumFactor
Constant relating track curvature in b field to momentum.
Definition: TrackCreator.h:93
StringVector m_kinkVertexCollections
The kink vertex collections.
Definition: TrackCreator.h:63