Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

JetMaker.h

Go to the documentation of this file.
00001 // ================================================
00002 // JetMaker 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: JetMaker
00014 //
00015 // Description: 
00016 //
00017 //  Algorithm which knows how to make Jets
00018 //
00019 //  The resulting Jets are added to the Event
00020 //
00021 // ................................................................
00022 //
00023 
00024 #ifndef ATLFAST_JETMAKER_H
00025 #define ATLFAST_JETMAKER_H
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 // Other
00045 #ifndef CLHEP_LORENTZVECTOR_H
00046 #include "CLHEP/Vector/LorentzVector.h"
00047 #define CLHEP_LORENTZVECTOR_H
00048 #endif
00049 
00050 // Atlfast
00051 #ifndef ATLFAST_KINEMATICHELPER_H
00052 #include "AtlfastCode/KinematicHelper.h"
00053 #endif
00054 
00055 #ifndef ATLFAST_MCPARTICLECOLLECTION_H
00056 #include "AtlfastCode/MCparticleCollection.h"
00057 #endif
00058 
00059 //*************************************
00060 //Default parameters private to this algorithm
00061 //*************************************
00062 #define DEFAULT_minPT       10    // Minimum jet transverse momentum
00063 #define DEFAULT_maxEta      5     // eta range to consider 
00064 #define DEFAULT_doSmearing  true  // Smear the jet four vector?
00065  
00066 #define DEFAULT_rconeb      0.400
00067 #define DEFAULT_rconef      0.400
00068 //*****************************************
00069 //cuts on MC particles used to tag jets
00070 #define DEFAULT_bPtMin          5.0
00071 #define DEFAULT_cPtMin          5.0
00072 #define DEFAULT_tauPtMin       10.0
00073 #define DEFAULT_bMaxDeltaR      0.2
00074 #define DEFAULT_cMaxDeltaR      0.2
00075 #define DEFAULT_tauMaxDeltaR    0.3
00076 #define DEFAULT_etaTagMax       2.5
00077 #define DEFAULT_tauJetPtRatio   0.9
00078 //*****************************************
00079 // Default paths in the Transient event store to get/put entities
00080 //
00081 //******************************************
00082 
00083 #define DEFAULT_inputLocation           "/Event/AtlfastClusters" 
00084 #define DEFAULT_outputLocation          "/Event/AtlfastJets" 
00085 #define DEFAULT_muonLocation            "/Event/AtlfastNonIsolatedMuons"
00086 #define DEFAULT_mcTruthLocation         "/Event/McEventCollection"
00087 #define DEFAULT_unusedCellLocation      "/Event/AtlfastUnusedCells"
00088 #define DEFAULT_missingMomentumLocation "/Event/AtlfastMissingMomentum"
00089 //***************************************************************
00090 // JetMaker class declaration
00091 //
00092 // A "Gaudi algorithm" is something which gets scheduled and controlled
00093 // by the framework. In its simplest definition it is something which
00094 //  - gets clled for each event 
00095 //  - can get anything it wants out of the Transient Event Store"
00096 //  - can put anything it makes into the store.
00097 
00098 //
00099 //****************************************************************
00100 class MsgStream;
00101 class ISvcLocator;
00102 
00103 namespace PartitionCondition{
00104   class BelowThresholdDeltaR;
00105 }
00106 
00107 namespace Atlfast {
00112   class TesIO;
00113   class Cluster;
00114   class TesIO;
00115   class ISmearer;
00116   class ReconstructedParticle;
00117   class Jet;
00118 
00119   class JetMaker : public Algorithm
00120 {
00121 
00122  private:
00123   //------------------------------------
00124   // Types used internally by this class
00125   // for local collections 
00126   //------------------------------------
00127 
00128   typedef std::vector<Cluster*>                         localClusterCollection;
00129   typedef std::vector<Cluster*>::iterator               localClusterIterator;
00130   typedef std::vector<ReconstructedParticle*>           MuonCollection;
00131   typedef std::vector<ReconstructedParticle*>::iterator MuonIterator;
00132 
00133   //--------------------------------
00134   // Parameters of this algorithm
00135   // (descriptions above)
00136   //--------------------------------
00137 
00138 
00139   double        m_minPT;     
00140   double        m_maxEta;       
00141   bool          m_doSmearing;
00142 
00143   double        m_barrelForwardEta;
00144   double        m_rconeb;
00145   double        m_rconef;
00146 
00147   double m_bPtMin;
00148   double m_bMaxDeltaR;
00149   double m_cPtMin;
00150   double m_cMaxDeltaR;
00151   double m_tauPtMin;
00152   double m_tauMaxDeltaR;
00153   double m_etaTagMax;
00154   double m_tauJetPtRatio;
00155 
00156   //--------------------------------------------
00157   // Smearer helper class
00158   // which knows all about how to do smearing
00159   // for my particles
00160   //---------------------------------------------
00161 
00162 
00166   ISmearer* m_smearer;
00167   ISmearer* m_cellSmearer;
00168 
00169 
00170   TesIO* m_tesIO;
00171 
00172   //--------------------------------------------------
00173   // Paths in the Transient Event store to get/put things
00174   // These are currently set in member variables so that
00175   // they can be overwritten by the job options service
00176   //--------------------------------------------------
00177 
00178   std::string m_inputLocation ;
00179   std::string m_outputLocation ;
00180   std::string m_muonLocation;
00181   std::string m_mcTruthLocation;
00182   std::string m_unusedCellLocation;
00183   std::string m_missingMomentumLocation;
00184 
00185 
00186 
00187   //-------------------------------
00188   // helper
00189   //-------------------------------
00190 
00191   KinematicHelper m_kinehelp ;
00192 
00193   int getJetTags(MCparticleCollection&  mcParticles,
00194                   const PartitionCondition::BelowThresholdDeltaR& tagSelector
00195                   )const;
00196   int getTauTags(MCparticleCollection&  mcParticles,
00197                  const PartitionCondition::BelowThresholdDeltaR& tagSelector,
00198                  double jetPt )const;
00199   void tag(Jet* jet, 
00200            MCparticleCollection&  mcParticles_b, 
00201            MCparticleCollection&  mcParticles_c, 
00202            MCparticleCollection&  mcParticles_tau) const;
00203  
00204   HepLorentzVector addUnusedCells(MsgStream&) const;
00205 
00206   //-------------------------------
00207   // Protected methods
00208   //-------------------------------
00209  public:
00210 
00211   //-------------------------
00212   // Constructors/Destructors
00213   //
00214   // Gaudi requires that the constructor takes certain arguments
00215   // (and passes them directly to the constructor of the base class)
00216   //-------------------------
00217 
00218   JetMaker( const std::string& name, ISvcLocator* pSvcLocator ) ; 
00219    virtual ~JetMaker();
00220 
00221 
00222   //------------------------------------------------------
00223   // Methods used by Gaudi to run the algorithm
00224   //------------------------------------------------------
00225 
00226    StatusCode initialize() ;
00227    StatusCode execute() ;
00228    StatusCode finalize() ;
00229 
00230   //------------------------------------------------------
00231   // Methods of IReconstructedParticleMaker which we are
00232   // implementing
00233   //------------------------------------------------------
00234 
00235    Jet* create( Cluster* );
00236    bool isAcceptable( Jet* );
00237    void addMuons(Jet*, MuonCollection& );
00238    MsgStream& dumpParameters(MsgStream& ) const; 
00239 
00240 };
00241 
00242 
00243 }  //end of namespace bracket
00244 
00245 #endif
00246 
00247 
00248 
00249 
00250 
00251 
00252 
00253 
00254 
00255 
00256 
00257 
00258 
00259 
00260 
00261 

Generated on Thu Feb 21 14:30:46 2002 for Atlfast by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001