00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef ATLFAST_DEFAULTRECONTRUCTEDPARTICLEMAKER_H
00044 #define ATLFAST_DEFAULTRECONTRUCTEDPARTICLEMAKER_H
00045
00046
00047 #include <vector>
00048 #include <string>
00049
00050
00051 #include "GaudiKernel/ISvcLocator.h"
00052 #include "GaudiKernel/IAlgorithm.h"
00053 #include "GaudiKernel/Algorithm.h"
00054 #include "GaudiKernel/MsgStream.h"
00055 #include "GaudiKernel/DataObject.h"
00056
00057
00058 #include "CLHEP/Vector/LorentzVector.h"
00059 #include "HepMC/GenEvent.h"
00060 #include "HepMC/GenParticle.h"
00061
00062
00063 #include "AtlfastEvent/ReconstructedParticle.h"
00064 #include "AtlfastEvent/ReconstructedParticleCollection.h"
00065 #include "AtlfastAlgs/ISmearer.h"
00066 #include "AtlfastUtils/TesIO.h"
00067
00068
00069 namespace HepMC_helper{
00070 class IMCselector;
00071 }
00072
00073 namespace Atlfast {
00074 using std::string;
00075
00085 class DefaultReconstructedParticleMaker :
00086 public virtual Algorithm
00087 {
00088
00089 public:
00090
00091
00092
00093
00095 DefaultReconstructedParticleMaker(
00096 const std::string& name,
00097 ISvcLocator* pSvcLocator
00098 );
00100 virtual ~DefaultReconstructedParticleMaker();
00101
00102
00103
00104
00105
00107 virtual StatusCode initialize() ;
00109 virtual StatusCode execute() ;
00111 virtual StatusCode finalize() ;
00112
00113
00114 private:
00115
00116
00117
00118
00119
00120 typedef std::vector<HepMC::GenParticle*> t_MC_particleCollection ;
00121 typedef std::vector<HepMC::GenParticle*>::iterator t_MC_particleIterator ;
00122
00123
00124
00125
00126
00127
00128
00130 int m_particleType;
00132 double m_mcPtMin ;
00134 double m_mcEtaMax ;
00135
00136
00138 double m_PtMin;
00140 double m_EtaMax;
00141
00143 bool m_doSmearing;
00144
00145
00147 std::string m_MC_eventLocation ;
00149 std::string m_outputLocation ;
00150
00151
00153 int m_muSmearKey;
00154
00155
00156
00157
00160 HepMC_helper::IMCselector* m_ncutter ;
00161
00162
00163
00164
00165
00166
00171 ISmearer* m_smearer;
00172
00176 ReconstructedParticle * lnkReconstructedParticle;
00177
00178
00179
00181
00182
00183 TesIO* m_tesIO;
00184
00186 void getSmearer(int lumi, int seed, MsgStream& log );
00188 virtual ReconstructedParticle* create( MsgStream&,
00189 const HepMC::GenParticle* );
00191 virtual bool isAcceptable( MsgStream&, const ReconstructedParticle* );
00192
00193 };
00194
00195
00196 }
00197
00198 #endif
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210