AtlfastC.h

Go to the documentation of this file.
00001 // ================================================
00002 // AtlfastC class description
00003 // ================================================
00004 //
00005 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT
00006 //
00007 //
00008 // This version....
00009 //
00010 //
00011 // Namespace Atlfast::
00012 //
00013 // class: AtlfastC
00014 // Author: S. Allwood, C.Collins-Tooth, S. Ferrag, C. Wright
00015 //
00016 // Description: 
00017 //
00018 //  Algorithm for particle and jet efficiencies.
00019 //  Output should be new Atlfast collections with efficiencies applied.
00020 //
00021 // ................................................................
00022 //
00023 
00024 #ifndef ATLFAST_C
00025 #define ATLFAST__C
00026 
00027 // STL
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 // Gaudi 
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   //switch for the different methods
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   //other variables
00102   
00103   bool m_notInit;
00104   TesIO* m_tesIO;
00105 
00106   HepRandomEngine* m_pRandomEngine;
00107   RandFlat* m_pRandFlatGenerator;
00108   
00109   //  std::vector<Jet*>  m_Jets;
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   // Paths in the Transient Event store to get/put things
00127   // These are currently set in member variables so that
00128   // they can be overwritten by the job options service
00129   //--------------------------------------------------
00130   //  ICluster  * dummy_cluster ;
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   //holds the Stotegate MC location
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   // Constructors/Destructors
00184   //
00185   // Gaudi requires that the constructor takes certain arguments
00186   // (and passes them directly to the constructor of the base class)
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 }  //end of namespace bracket
00218 
00219 #endif

Generated on Mon Sep 24 14:19:10 2007 for AtlfastAlgs by  doxygen 1.5.1