Report problems to ATLAS LXR Team (with time and IP address indicated)

The LXR Cross Referencer

source navigation ]
diff markup ]
identifier search ]
general search ]
 
 
Architecture: linux ]
Version: head ] [ nightly ] [ GaudiDev ]
  Links to LXR source navigation pages for stable releases [ 12.*.* ]   [ 13.*.* ]   [ 14.*.* ] 

001 #ifndef USERANALYSISUTILS_USERMUONTOOL_H 
002 #define USERANALYSISUTILS_USERMUONTOOL_H 
003 
004 /*****************************************************************************
005 Name    : UserMuonTool.h
006 Package : offline/PhysicsAnalysis/AnalysisCommon/UserAnalysisUtils
007 Author  : Ketevi A. Assamagan
008 Created : September 2007
009 Purpose : User tools for muon analyis on ESD/AOD/DPD in Athena
010           - redo vertexing, isolation, refitting, recombination on the fly
011             assuming different aligment and calibration constants
012 *****************************************************************************/
013 
014 #include "GaudiKernel/AlgTool.h"
015 #include "GaudiKernel/MsgStream.h"
016 #include "StoreGate/StoreGateSvc.h"
017 
018 #include "VxVertex/VxContainer.h"
019 #include "Particle/TrackParticleContainer.h"
020 #include "CaloEvent/CaloClusterContainer.h"
021 #include "TrkSegment/SegmentCollection.h"
022 
023 #include "muonEvent/MuonContainer.h"
024 
025 #include <string>
026 #include <map>
027 #include <vector>
028 
029 /** Interface ID for User Muon making */  
030 static const InterfaceID IID_UserMuonTool("UserMuonTool", 1, 0);
031 
032 class UserMuonTool : public AlgTool {
033 
034 public:
035 
036   /** Standard Constructor */
037   UserMuonTool(const std::string& type, const std::string& name,
038                    const IInterface* parent);
039 
040   /** AlgTool and IAlgTool interface methods */
041   static const InterfaceID& interfaceID( ) { return IID_UserMuonTool; };
042 
043   /** Overriding initialize and finalize */
044   virtual StatusCode initialize();
045 
046   /** refit one Muon
047       - pass the the muon to be refitted
048       - get back a new refitted muon with all its associated new tracks, trackParticles, segments and CaloClusters
049       - the isolation is also redone automatically
050       - the energies in the calorimeter layers are recalculated */
051   virtual StatusCode refit (const Analysis::Muon* oldMuon, Analysis::Muon* newMuon, 
052                             std::vector<const Rec::TrackParticle*>& newTrackParticles,
053                             std::vector<const Trk::Track*>& newTracks,
054                             std::vector<const Trk::Segment>& newSegments,
055                             CaloCluster * newCluster);
056 
057   /** refit a collection of muons
058       - it will call the refit for each muon in the collection
059       - you will pass the container of the muons
060       - you will also pass a vector<std::string> it should contains the StoreGates of the new TrackParticleContainer,
061         TrackCollection, SegmentCollection and CaloClusterContainer and MuonContainer respectively and in that order. 
062         Thus, the size of the vector must be 5
063       - The new collections are written to StoreGate: new MuonContainer of refitted Muons, and new Containers of the
064         associated TrackParticles, Tracks, Segments and CaloClusters */
065   virtual StatusCode refit (const Analysis::MuonContainer * oldMuonContainer, std::vector<std::string>& newKeys);
066 
067   /** redo calo isolation either on a refitted muon track or with different parameters 
068       if you pass a list of deltaR, you get a list of results back */
069   virtual StatusCode redoCaloIsolation(const Analysis::Muon*, const float deltaR, const bool onlyEM, float& value);
070   virtual StatusCode redoCaloIsolation(const Analysis::Muon*, const std::vector<float>& deltaR, const bool onlyEM, 
071                                        std::vector<double>& values);
072 
073   /** redo track isolation either on a refitted muon track or with different parameters 
074       if you pass a list of deltaR you will get back a list of values */
075   virtual StatusCode redoTrackIsolation(const Analysis::Muon*, const float deltaR, float& value);
076   virtual StatusCode redoTrackIsolation(const Analysis::Muon*, const std::vector<float>& deltaR, 
077                                         std::vector<double>& values);
078 
079   /** redo combinations -> MuonSpectrometer/Inner Detector after refitting for example
080       - you pass an std::vector<std::string>: it should contain the StoreGate keys of:
081          # the Inner Detector TrackParticles,
082          # the key for the Muon TrackParticles extrapolated to the vertex, 
083       - on output, you get a new muon collection - the list of StorGate keys of the associated containers:
084          # Inner Detector - same as on input
085          # Muon Spectrometer to vertex - same as on input
086          # CaloClusterContainer keys
087          # and the new MuonCollection keys 
088       - the new Muon are completely dressed with energy/isolation/calo information */
089   virtual StatusCode recombine(const std::vector<std::string>& oldKeys, std::vector<std::string>& newKeys);
090 
091   /** refit the common vertex to the list of Muons 
092        need to think about this in more details */
093   virtual StatusCode refitVertex( const std::vector<const Analysis::Muon*> );
094 
095   /** finalization */
096   virtual StatusCode finalize();
097 
098 protected:
099 
100    /** Standard destructor */
101    virtual ~UserMuonTool( );
102 
103   /** a handle on Store Gate for access to the Event Store */
104   StoreGateSvc* m_storeGate;
105 
106   /** should contain the StoreGate keys to be passed in job options */ 
107   std::vector<std::string> m_keys;
108 
109 };
110 
111 #endif // USERANALYSISUTILS_USERMUONTOOL_H 
112 
113 
114 
115 

source navigation ] diff markup ] identifier search ] general search ]

Due to the LXR bug, the updates fail sometimes to remove references to deleted files. The Saturday's full rebuilds fix these problems
This page was automatically generated by the LXR engine. Valid HTML 4.01!