00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef ATLFAST_C
00025 #define ATLFAST__C
00026
00027
00028 #ifndef STD_VECTOR_H
00029 #include <vector>
00030 #define STD_VECTOR_H
00031 #endif
00032
00033 #ifndef STD_STRING_H
00034 #include <string>
00035 #define STD_STRING_H
00036 #endif
00037
00038
00039 #ifndef GAUDIKERNEL_ALGORITHM_H
00040 #include "GaudiKernel/Algorithm.h"
00041 #define GAUDIKERNEL_ALGORITHM_H
00042 #endif
00043
00044 #include "AtlfastEvent/ReconstructedParticle.h"
00045 #include "CLHEP/Random/RandomEngine.h"
00046 #include "CLHEP/Random/RandFlat.h"
00047
00048 #include "AtlfastEvent/TypeVisitor.h"
00049 #include "AtlfastEvent/CollectionDefs.h"
00050 #include "AtlfastEvent/Interpolator.h"
00051 #include "AtlfastAlgs/ContainerDispatcher.h"
00052
00053 #include "AtlfastEvent/ICluster.h"
00054 #include "CLHEP/Vector/LorentzVector.h"
00055
00056 class MsgStream;
00057 class ISvcLocator;
00058
00059
00060 namespace Atlfast {
00061
00062 class TesIO;
00063
00064 using std::string;
00065
00071 class AtlfastC : public Algorithm
00072 {
00073 private:
00074
00075
00076
00077
00078
00079 bool m_ApplyElecElecEff;
00080 bool m_ApplyElecPhotEff;
00081 bool m_ApplyElecMuonEff;
00082 bool m_ApplyPhotPhotEff;
00083 bool m_ApplyPhotElecEff;
00084 bool m_ApplyPhotMuonEff;
00085 bool m_ApplyMuonElecEff;
00086 bool m_ApplyMuonPhotEff;
00087 bool m_ApplyMuonMuonEff;
00088 bool m_ApplyJetJetEff;
00089 bool m_ApplyJetElecEff;
00090 bool m_ApplyJetPhotEff;
00091 bool m_ApplyJetMuonEff;
00092 bool m_ApplyElecJetEff;
00093 bool m_ApplyPhotJetEff;
00094 bool m_ApplyMuonJetEff;
00095
00096
00097 Jet* createJet(const ReconstructedParticle* rp);
00098
00099
00100
00101
00102
00103 bool m_notInit;
00104 TesIO* m_tesIO;
00105
00106 HepRandomEngine* m_pRandomEngine;
00107 RandFlat* m_pRandFlatGenerator;
00108
00109
00110
00111 std::vector<ReconstructedParticle*> originalElectrons;
00112 std::vector<ReconstructedParticle*> originalPhotons;
00113 std::vector<ReconstructedParticle*> originalMuons;
00114 std::vector<Jet*> originalJets;
00115
00116 ReconstructedParticleCollection* m_AtlfastCElectrons;
00117 ReconstructedParticleCollection* m_AtlfastCPhotons;
00118 ReconstructedParticleCollection* m_AtlfastCMuons;
00119 JetCollection* m_AtlfastCJets;
00120
00121 int ptnum, etanum;
00122 std::vector<ReconstructedParticle*>::const_iterator m_it;
00123 std::vector<Jet*>::const_iterator j_it;
00124
00125
00126
00127
00128
00129
00130
00131
00132 std::string m_inputeLocation ;
00133 std::string m_inputphotonLocation ;
00134 std::string m_inputmuonLocation ;
00135 std::string m_inputjetLocation ;
00136
00137 std::string m_outputeLocation ;
00138 std::string m_outputphotonLocation ;
00139 std::string m_outputmuonLocation ;
00140 std::string m_outputjetLocation ;
00141
00142
00143 std::string m_mcLocation;
00144
00145 std::string m_elecelecEfile;
00146 std::string m_elecphotEfile;
00147 std::string m_elecmuonEfile;
00148 std::string m_photelecEfile;
00149 std::string m_photphotEfile;
00150 std::string m_photmuonEfile;
00151 std::string m_muonelecEfile;
00152 std::string m_muonphotEfile;
00153 std::string m_muonmuonEfile;
00154 std::string m_jetjetEfile;
00155 std::string m_jetelecEfile;
00156 std::string m_jetphotEfile;
00157 std::string m_jetmuonEfile;
00158 std::string m_elecjetEfile;
00159 std::string m_photjetEfile;
00160 std::string m_muonjetEfile;
00161
00162 Interpolator* m_electron_interpolator;
00163 Interpolator* m_photon_interpolator;
00164 Interpolator* m_muon_interpolator;
00165 Interpolator* m_jet_interpolator ;
00166 Interpolator* m_elecphot_interpolator;
00167 Interpolator* m_elecmuon_interpolator;
00168 Interpolator* m_elecjet_interpolator;
00169 Interpolator* m_photelec_interpolator;
00170 Interpolator* m_photmuon_interpolator;
00171 Interpolator* m_photjet_interpolator;
00172 Interpolator* m_muonelec_interpolator;
00173 Interpolator* m_muonphot_interpolator;
00174 Interpolator* m_muonjet_interpolator;
00175 Interpolator* m_jetelec_interpolator;
00176 Interpolator* m_jetphot_interpolator;
00177 Interpolator* m_jetmuon_interpolator;
00178
00179
00180 public:
00181
00182
00183
00184
00185
00186
00187
00188
00190 AtlfastC( const std::string& name, ISvcLocator* pSvcLocator ) ;
00191
00193 virtual ~AtlfastC();
00194
00196 StatusCode ApplyEfficiency(std::vector<ReconstructedParticle*> , ReconstructedParticleCollection* , Interpolator* ,int ) ;
00198 StatusCode ApplyEfficiency(std::vector<Jet*> , ReconstructedParticleCollection* , Interpolator* ,int ) ;
00200 StatusCode ApplyEfficiency(std::vector<ReconstructedParticle*> , JetCollection* , Interpolator* ) ;
00202 StatusCode ApplyEfficiency(std::vector<Jet*> , JetCollection* , Interpolator* ) ;
00203
00205 double getEfficiencyMatrixElement(double , double , Interpolator* ) ;
00206
00207
00209 StatusCode initialize() ;
00211 StatusCode execute() ;
00213 StatusCode finalize() ;
00214
00215 };
00216
00217 }
00218
00219 #endif