All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
KinkFinder.h
Go to the documentation of this file.
1 #ifndef KinkFinder_H
2 #define KinkFinder_H 1
3 
4 #include "marlin/Processor.h"
5 #include "lcio.h"
6 #include <string>
7 #include <vector>
8 #include "TrackPair.h"
9 #include "HelixClass.h"
10 
11 using namespace lcio ;
12 using namespace marlin ;
13 
14 /**
15 \addtogroup Tracking Tracking
16 @{
17 
18 \addtogroup KinkFinder KinkFinder
19 @{
20 KinkFinder processor identifes kinked tracks originating.
21 KinkFinder Processor <br>
22  * KinkFinder processor identifes kinked tracks originating <br>
23  * from charged particle decays e.g. kaons, sigmas. <br>
24  * KinkFinder also identifies prongs 1 -> many track matches and <br>
25  * split tracks <br>
26  * <h4>Input collections and prerequisites</h4>
27  * Processor requires collection of tracks. The name of the collection <br>
28  * is specified by the processor parameter "TrackCollection". <br>
29  * If no collection with the specified name exist in event <br>
30  * processor takes no action <br>
31  * <h4>Output</h4>
32  * Processor produces LCIO collections of the reconstructed particles, <br>
33  * and vertices, containing information on the reconstructed neutral vertices <br>
34  * Position of the vertex is accessed through the LCIO object VERTEX. <br>
35  * Four-vector of the vertex is stored in the object RECONSTRUCTEDPARTICLE <br>
36  * Type of the VERTEX is accessed through the method ReconstructedParticle::getType() <br>
37  * The conventionial PDG codes are adopted to specify type of kink <br>
38  * Three collections (VERTEX and RECONSTRCUTED PARTICLE) can be written: Kinks, Prongs, Split Tracks <br>
39  * these are mutually exclusive.
40  * @param TrackCollection name of the input Track collection <br>
41  * (default value LDCTracks) <br>
42  * @param RecoParticleCollection name of the output collection of the Kink ReconstructedParticles <br>
43  * (default value KinkRecoParticles) <br>
44  * @param VertexCollection name of the output collection of Kink Vertices <br>
45  * (default value KinkVertices) <br>
46  * @param RecoParticleCollection name of the output collection of the Prong ReconstructedParticles <br>
47  * (default value ProngRecoParticles) <br>
48  * @param VertexCollection name of the output collection of Prong Vertices <br>
49  * (default value ProngVertices) <br>
50  * @param RecoParticleCollection name of the output collection of the Split Track ReconstructedParticles <br>
51  * (default value SplitRecoParticles) <br>
52  * @param VertexCollection name of the output collection of Split Track Vertices <br>
53  * (default value SplitVertices) <br>
54  * @param CutOnRadius minimum radius (mm) for identified kink <br>
55  * (default value 100) <br>
56  * @param DebugPrinting level of Debug printing <br>
57  * (default value 0) <br>
58  * @param HyperonDecayMassCut maximal allowed deviation in mass for Hyperon decay hypothesis <br>
59  * (default value 0.15 GeV) <br>
60  * @param HyperonTimeCut maximal cut on decay time/lifetime for Hyperon decay hypothesis <br>
61  * (default value 6 ) <br>
62  * @param SigmaDecayMassCut maximal allowed deviation in mass for Sigma decay hypothesis <br>
63  * (default value 0.15 GeV) <br>
64  * @param SigmaTimeCut maximal cut on decay time/lifetime for Sigma decay hypothesis <br>
65  * (default value 6 ) <br>
66  * @param KaonDecayMassCut maximal allowed deviation in mass for Kaon decay hypothesis <br>
67  * (default value 0.075 GeV) <br>
68  * @param PionDecayMassCut maximal allowed deviation in mass for Pion decay hypothesis <br>
69  * (default value 0.03 GeV) <br>
70  * @param KinkProjectionCutTPC maximum difference in projected track trajectories to be tagged a kink in the TPC <br>
71  * (default value 20 mm) <br>
72  * @param TightKinkProjectionCutTPC tight cut projected track trajectories to be tagged a kink in the TPC <br>
73  * (default value 5 mm) <br>
74  * @param VeryTightKinkProjectionCutTPC very tight cut projected track trajectories to be tagged a kink in the TPC <br>
75  * (default value 1 mm) <br>
76  * @param KinkProjectionCutSIT maximum difference in projected track trajectories to be tagged a kink in the SIT <br>
77  * (default value 10 mm) <br>
78  * @param LooseProjectionCutSIT loose cut in projected track trajectories to be tagged a kink in the SIT <br>
79  * (default value 10 mm) <br>
80  * @param MaxDeltaTpcLayers maximum differenc in TPC pad rows between start-end of two associated tracks <br>
81  * (default value 10 ) <br>
82  * @param MinimumTrackHits minimum number of hits on tracks which are considered <br>
83  * (default value 5 ) <br>
84  * @param MinELambda minimum energy for Lammbda candidate <br>
85  * (default value 2 GeV) <br>
86  * @param SplitTrackMaxDeltaP maximum difference in momentum of split track segments <br>
87  * (default value 0.2 GeV) <br>
88  * @param SplitTrackMaxFracDeltaP maximum fractional difference in momentum of split track segments <br>
89  * (default value 0.02) <br>
90  * @author M. Thomson, DESY
91  */
92 
93 typedef struct {
94  float x;
95  float y;
96  float z;
97 } vec3;
98 
99 typedef struct {
100  int tracki;
101  int trackj;
102  float vtx[3];
103  float p[3];
104  float mass;
105  float distance;
106  int pdgCode;
108 
109 
110 /** KinkFinder Processor <br>
111  * KinkFinder processor identify kinked tracks <br>
112  */
113 class KinkFinder : public Processor {
114 
115  public:
116 
117  virtual Processor* newProcessor() { return new KinkFinder ; }
118 
119 
120  KinkFinder() ;
121 
122  virtual void init() ;
123 
124  virtual void processRunHeader( LCRunHeader* run ) ;
125 
126  virtual void processEvent( LCEvent * evt ) ;
127 
128  virtual void check( LCEvent * evt ) ;
129 
130  virtual void end() ;
131 
132  protected:
133 
134  void Sorting( TrackPairVec & trkPairVec );
135 
136  float kinkMass(HelixClass* parent, HelixClass* daughter, float daughterMass, float neutralMass);
137 
138 
139  int _nRun{};
140  int _nEvt{};
141 
142  std::string _trackColName{};
143 
144  std::string _kinkVertexColName{};
145  std::string _prongVertexColName{};
146  std::string _splitVertexColName{};
147 
148  std::string _kinkRecoPartColName{};
149  std::string _prongRecoPartColName{};
150  std::string _splitRecoPartColName{};
151 
152  float _rKinkCut{};
153  int _minTrackHits{};
154  int _maxDeltaTpcLayers{};
155  int _debugPrinting{};
156  float _kaonDecayMassCut{};
157  float _pionDecayMassCut{};
158  float _sigmaDecayMassCut{};
159  float _hyperonDecayMassCut{};
160  float _sigmaTimeCut{};
161  float _hyperonTimeCut{};
162  float _tightDrCutTPC{};
163  float _veryTightDrCutTPC{};
164  float _drCutTPC{};
165  float _drCutSIT{};
166  float _looseDrCutSIT{};
167  float _maxSplitTrackFracDeltaP{};
168  float _maxSplitTrackDeltaP{};
169  float _minELambda{};
170 
171 
172  float _bField{};
173  float _tpcInnerR{};
174  float _tpcOuterR{};
175  float _tpcZmax{};
176  int _tpcMaxRow{};
177  int _nLayersSIT{};
178  int _nLayersVTX{};
179  std::vector<float> _rSIT{};
180  std::vector<float> _rVTX{};
181 
182 
183 } ;
184 /** @} @}*/
185 #endif
KinkFinder Processor KinkFinder processor identify kinked tracks
Definition: KinkFinder.h:113
float x
Definition: KinkFinder.h:94
float y
Definition: KinkFinder.h:95
virtual Processor * newProcessor()
Definition: KinkFinder.h:117
float z
Definition: KinkFinder.h:96