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 "AtlfastUtils/KinematicHelper.h"
00053 #endif
00054 
00055 #ifndef ATLFAST_MCPARTICLECOLLECTION_H
00056 #include "AtlfastEvent/MCparticleCollection.h"
00057 #endif
00058 //***************************************************************
00059 // JetMaker class declaration
00060 //
00061 // A "Gaudi algorithm" is something which gets scheduled and controlled
00062 // by the framework. In its simplest definition it is something which
00063 //  - gets clled for each event 
00064 //  - can get anything it wants out of the Transient Event Store"
00065 //  - can put anything it makes into the store.
00066 
00067 //
00068 //****************************************************************
00069 class MsgStream;
00070 class ISvcLocator;
00071 
00072 namespace PartitionCondition{
00073   class BelowThresholdDeltaR;
00074 }
00075 
00076 namespace Atlfast {
00077   using std::string;
00078   using std::vector;
00083   class TesIO;
00084   class Cluster;
00085   class TesIO;
00086   class ISmearer;
00087   class ReconstructedParticle;
00088   class Jet;
00089   
00090   class JetMaker : public Algorithm{
00091 
00092   private:
00093     //------------------------------------
00094     // Types used internally by this class
00095     // for local collections 
00096     //------------------------------------
00097     
00098     typedef std::vector<Cluster*>                       localClusterCollection;
00099     typedef std::vector<Cluster*>::iterator               localClusterIterator;
00100     typedef std::vector<ReconstructedParticle*>           MuonCollection;
00101     typedef std::vector<ReconstructedParticle*>::iterator MuonIterator;
00102     
00103     //--------------------------------
00104     // Parameters of this algorithm
00105     // (descriptions above)
00106     //--------------------------------
00107     
00108      
00109     double        m_minPT;     
00110     double        m_maxEta;       
00111     bool          m_doSmearing;
00112     
00113     double        m_barrelForwardEta;
00114     double        m_rconeb;
00115     double        m_rconef;
00116     
00117     double m_bPtMin;
00118     double m_bMaxDeltaR;
00119     double m_cPtMin;
00120     double m_cMaxDeltaR;
00121     double m_tauPtMin;
00122     double m_tauMaxDeltaR;
00123     double m_etaTagMax;
00124     double m_tauJetPtRatio;
00125     
00126     //--------------------------------------------
00127     // Smearer helper class
00128     // which knows all about how to do smearing
00129     // for my particles
00130     //---------------------------------------------
00131     
00132     ISmearer* m_smearer;
00133     ISmearer* m_cellSmearer;
00134     
00135     
00136     TesIO* m_tesIO;
00137     
00138     //--------------------------------------------------
00139     // Paths in the Transient Event store to get/put things
00140     // These are currently set in member variables so that
00141     // they can be overwritten by the job options service
00142     //--------------------------------------------------
00143     
00144     std::string m_inputLocation ;
00145     std::string m_outputLocation ;
00146     std::string m_muonLocation;
00147     std::string m_mcTruthLocation;
00148     std::string m_unusedCellLocation;
00149     std::string m_missingMomentumLocation;
00150 
00151     //-------------------------------
00152     // helper
00153     //-------------------------------
00154     
00155     KinematicHelper m_kinehelp ;
00156     
00157     int getJetTags(MCparticleCollection&  mcParticles,
00158                    const PartitionCondition::BelowThresholdDeltaR& tagSelector
00159                    )const;
00160     int getTauTags(MCparticleCollection&  mcParticles,
00161                    const PartitionCondition::BelowThresholdDeltaR& tagSelector,
00162                    double jetPt )const;
00163     void tag(Jet* jet, 
00164              MCparticleCollection&  mcParticles_b, 
00165              MCparticleCollection&  mcParticles_c, 
00166              MCparticleCollection&  mcParticles_tau) const;
00167     
00168     HepLorentzVector addUnusedCells(MsgStream&) const;
00169     
00170     //-------------------------------
00171     // Protected methods
00172     //-------------------------------
00173   public:
00174     
00175     //-------------------------
00176     // Constructors/Destructors
00177     //
00178     // Gaudi requires that the constructor takes certain arguments
00179     // (and passes them directly to the constructor of the base class)
00180     //-------------------------
00181     
00182     JetMaker( const std::string& name, ISvcLocator* pSvcLocator ) ; 
00183     virtual ~JetMaker();
00184     
00185     
00186     //------------------------------------------------------
00187     // Methods used by Gaudi to run the algorithm
00188     //------------------------------------------------------
00189     
00190     StatusCode initialize() ;
00191     StatusCode execute() ;
00192     StatusCode finalize() ;
00193     
00194     //------------------------------------------------------
00195     // Methods of IReconstructedParticleMaker which we are
00196     // implementing
00197     //------------------------------------------------------
00198     
00199     Jet* create( Cluster* );
00200     bool isAcceptable( Jet* );
00201     void addMuons(Jet*, MuonCollection& );
00202     MsgStream& dumpParameters(MsgStream& ) const; 
00203 };
00204   
00205   
00206 }  //end of namespace bracket
00207 
00208 #endif
00209 
00210 
00211 
00212 
00213 
00214 
00215 
00216 
00217 
00218 
00219 
00220 
00221 
00222 
00223 
00224 

Generated on Wed May 1 14:11:31 2002 for AtlfastAlgs by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001