1 #ifndef TruthVertexFinder_h
2 #define TruthVertexFinder_h 1
7 #include <EVENT/LCCollection.h>
8 #include <IMPL/LCCollectionVec.h>
9 #include <EVENT/MCParticle.h>
10 #include <EVENT/Vertex.h>
11 #include "marlin/VerbosityLevels.h"
12 #include "streamlog/streamlog.h"
13 #include "marlin/Processor.h"
27 using namespace lcio ;
28 using namespace marlin ;
31 namespace TTbarAnalysis
62 virtual void processRunHeader( LCRunHeader* run ) ;
63 virtual void processEvent( LCEvent * evt ) ;
64 virtual void check( LCEvent * evt ) ;
67 void PrintParticle(MCParticle * particle);
68 void PrintChain(std::vector< MCParticle * > * chain);
70 void WriteVertexCollection(LCEvent * evt, std::vector< Vertex * > * bvertexes, std::vector< Vertex * > * bbarvertexes);
71 void Write(std::vector< EVENT::Vertex * > * vertices,
int & number);
74 void Write(
const std::vector< MCParticle * > particle ,
int v);
75 double getMissingPt(
const std::vector< MCParticle * > & bdaugthers,
const std::vector< MCParticle * > & cdaughters, Vertex * vertex);
76 void WriteQuarksCollection(LCEvent * evt, std::vector< MCParticle * > & quarks);
77 void WriteMisReco(std::vector< MCParticle * > * particles);
78 void GetAsymmetry(std::vector< MCParticle * > & particles);
79 void ClearVariables();
84 std::string _colName{} ;
85 std::string _outputcolName{};
86 std::string _outputquarkcolName{};
87 std::string _outputBStarName{};
88 std::string _outputProngsName{};
89 std::string _colRelName{};
90 std::string _outputBbarStarName{};
94 std::vector<PDGTYPE> _pdgs{};
97 int _initialQuarkPDGparameter{};
100 int _writeBonlyParameter{};
101 int _writeROOTparameter{};
106 TTree * _hVertexTree{};
107 TTree * _hTrackTree{};
108 TTree * _hBStarTree{};
109 TTree * _hMisRecoTree{};
110 std::string _hfilename{};
115 float _firstVertexDistance[2]{};
116 float _secondVertexDistance[2]{};
123 float _bbaraccuracy{};
124 float _bIPdistance{};
125 float _bbarIPdistance{};
131 float _bbardistance{};
133 float _bbarmomentum{};
135 float _cbarmomentum{};
137 float _cbaraccuracy{};
143 int _bbartotalnumber{};
151 float _cosantiquark{};
154 static const int MAXV = 15;
155 int _numberOfVertexes{};
156 float _distanceFromIP[MAXV]{};
157 float _coordinates[MAXV][3]{};
159 int _generation[MAXV]{};
161 int _numberOfParticles[MAXV]{};
162 float _energyOfParticles[MAXV][MAXV]{};
163 float _momentumOfParticles[MAXV][MAXV]{};
164 float _massOfParticles[MAXV][MAXV]{};
165 int _interactionOfParticles[MAXV][MAXV]{};
167 float _bptrack[MAXV]{};
168 float _betatrack[MAXV]{};
169 float _boffsettrack[MAXV]{};
170 float _bbarptrack[MAXV]{};
171 float _bbaretatrack[MAXV]{};
172 float _bbaroffsettrack[MAXV]{};
173 float _cptrack[MAXV]{};
174 float _cetatrack[MAXV]{};
175 float _coffsettrack[MAXV]{};
176 float _cbarptrack[MAXV]{};
177 float _cbaretatrack[MAXV]{};
178 float _cbaroffsettrack[MAXV]{};
180 static const int MAXVV = 30;
181 int _misreconumber{};
182 float _misrecotheta[MAXVV]{};
183 float _misrecocostheta[MAXVV]{};
184 float _misrecomomentum[MAXVV]{};
185 float _misrecopt[MAXVV]{};
188 float _bstarmomentum[MAXV]{};
189 float _bstaroffset[MAXV]{};
virtual Processor * newProcessor()
std::vector< LCCollection * > LCCollectionVec
This processor is designed to extruct a secondary/// vertices from collection of generated particles...