00001
00002
00003
00004
00005
00006
00007
00008
00009
00040
00041
00042
00043 #ifndef __ATLFAST_DefaultReconstructedParticlemaker__
00044 #define __ATLFAST_DefaultReconstructedParticlemaker__
00045
00046
00047
00048
00049
00050 #define DEFAULT_particleType 11
00051 #define DEFAULT_mcPtMin 0.0
00052 #define DEFAULT_mcEtaMax 100.0
00053 #define DEFAULT_PtMin 5.0
00054 #define DEFAULT_EtaMax 2.5
00055 #define DEFAULT_doSmearing true
00056 #define DEFAULT_MC_eventLocation "/Event/McEventCollection"
00057 #define DEFAULT_commonDataLocation "/Event/AtlfastCommonData"
00058 #define DEFAULT_outputLocation "/Event/AtlfastReconstructedParticle"
00059 #define DEFAULT_muSmearKey 1
00060
00061
00062
00063
00064 #include <vector>
00065 #include <string>
00066
00067
00068 #include "GaudiKernel/ISvcLocator.h"
00069 #include "GaudiKernel/IAlgorithm.h"
00070 #include "GaudiKernel/Algorithm.h"
00071 #include "GaudiKernel/MsgStream.h"
00072 #include "GaudiKernel/DataObject.h"
00073
00074
00075 #include "CLHEP/Vector/LorentzVector.h"
00076 #include "HepMC/GenEvent.h"
00077 #include "HepMC/GenParticle.h"
00078 #include "AtlfastCode/HepMC_helper.h"
00079
00080
00081 #include "AtlfastCode/ReconstructedParticle.h"
00082 #include "AtlfastCode/ReconstructedParticleCollection.h"
00083 #include "AtlfastCode/ISmearer.h"
00084 #include "AtlfastCode/TesIO.h"
00085 #include "AtlfastCode/CommonData.h"
00086
00087
00088
00089 namespace Atlfast {
00090
00100 class DefaultReconstructedParticleMaker :
00101 public virtual Algorithm
00102 {
00103
00104 public:
00105
00106
00107
00108
00110 DefaultReconstructedParticleMaker(
00111 const std::string& name,
00112 ISvcLocator* pSvcLocator
00113 );
00115 virtual ~DefaultReconstructedParticleMaker();
00116
00117
00118
00119
00120
00122 virtual StatusCode initialize() ;
00124 virtual StatusCode execute() ;
00126 virtual StatusCode finalize() ;
00127
00128
00129 private:
00130
00131
00132
00133
00134
00135 typedef std::vector<HepMC::GenParticle*> t_MC_particleCollection ;
00136 typedef std::vector<HepMC::GenParticle*>::iterator t_MC_particleIterator ;
00137
00138
00139
00140
00141
00142 bool m_notInit;
00143
00144
00146 int m_particleType;
00148 double m_mcPtMin ;
00150 double m_mcEtaMax ;
00151
00152
00154 double m_PtMin;
00156 double m_EtaMax;
00157
00159 bool m_doSmearing;
00160
00161
00163 std::string m_MC_eventLocation ;
00165 std::string m_commonDataLocation ;
00167 std::string m_outputLocation ;
00168
00169
00171 int m_muSmearKey;
00172
00173
00174
00175
00178 HepMC_helper::IMCselector* m_ncutter ;
00179
00180
00181
00182
00183
00184
00189 ISmearer* m_smearer;
00190
00194 ReconstructedParticle * lnkReconstructedParticle;
00195
00196
00197
00199
00200
00201 TesIO* m_tesIO;
00202
00204 void getSmearer(int lumi, int seed, MsgStream& log );
00206 virtual ReconstructedParticle* create( MsgStream&, const HepMC::GenParticle* );
00208 virtual bool isAcceptable( MsgStream&, const ReconstructedParticle* );
00209
00210 };
00211
00212
00213 }
00214
00215 #endif
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227