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

Generated on Mon Feb 4 15:54:24 2002 for Atlfast by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001