Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoCheck.h
1 #ifndef ALIMUONRECOCHECK_H
2 #define ALIMUONRECOCHECK_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 /// \ingroup evaluation
10 /// \class AliMUONRecoCheck
11 /// \brief Utility class to check reconstruction
12
13 #include <TObject.h>
14
15 class TClonesArray;
16 class TFile;
17 class TTree;
18 class AliESDEvent;
19 class AliMCEventHandler;
20 class AliMUONVTrackStore;
21 class AliMUONVTriggerTrackStore;
22 class AliMUONTrack;
23 class AliMUONTrackParam;
24 class AliMUONTriggerTrack;
25 class AliMUONGeometryTransformer;
26 class AliMUONTriggerCircuit;
27 class AliMUONLocalTrigger;
28 class AliMUONCalibrationData;
29 class AliMUONTriggerElectronics;
30
31 class AliMUONRecoCheck : public TObject 
32 {
33 public:
34   AliMUONRecoCheck(const Char_t *chLoader, const Char_t *pathSim = "./");
35   AliMUONRecoCheck(AliESDEvent *esdEvent, AliMCEventHandler *mcEventHandler);
36   virtual ~AliMUONRecoCheck();
37
38   /// Return the list of reconstructed tracks
39   AliMUONVTrackStore* ReconstructedTracks(Int_t event, Bool_t refit = kTRUE);
40
41   /// Return the list of reconstructed trigger tracks
42   AliMUONVTriggerTrackStore* TriggeredTracks(Int_t event);
43
44   Bool_t TriggerToTrack(const AliMUONLocalTrigger& locTrg, AliMUONTriggerTrack& triggerTrack);
45         
46   /// Return reference muon tracks
47   AliMUONVTrackStore* TrackRefs(Int_t event);
48
49   /// Return triggerable reference tracks
50   AliMUONVTriggerTrackStore* TriggerableTracks(Int_t event);
51         
52   /// Return reconstructible reference tracks
53   AliMUONVTrackStore* ReconstructibleTracks(Int_t event, UInt_t requestedStationMask = 0x1F,
54                                             Bool_t request2ChInSameSt45 = kTRUE,
55                                             Bool_t hitInFrontOfPad = kFALSE);
56
57         
58   /// Return the run number of the current ESD event
59   Int_t GetRunNumber();
60   
61   /// Return the total number of events.
62   Int_t NumberOfEvents() const;
63   
64   /// Return the reconstructed data of current event
65   const AliESDEvent* GetESDEvent() const { return fESDEvent; }
66   
67   /// Return the interface to the Monte Carlo data of current event
68   const AliMCEventHandler* GetMCEventHandler() const { return fMCEventHandler; }
69   
70   /// Return the track from the store matched with the given track (or 0x0) and the fraction of matched clusters
71   static AliMUONTrack* FindCompatibleTrack(AliMUONTrack &track, AliMUONVTrackStore &trackStore,
72                                            Int_t &nMatchClusters, Bool_t useLabel = kFALSE,
73                                            Double_t sigmaCut = 10.);
74   
75   /// Return the trigger track from the store matched with the given track (or 0x0)
76   static AliMUONTriggerTrack* FindCompatibleTrack(AliMUONTriggerTrack &track,
77                                                   const AliMUONVTriggerTrackStore &triggerTrackStore,
78                                                   Double_t sigmaCut = 10.);
79   
80 private:
81   /// Not implemented
82   AliMUONRecoCheck(const AliMUONRecoCheck& rhs);
83   /// Not implemented
84   AliMUONRecoCheck& operator = (const AliMUONRecoCheck& rhs);
85
86   void ResetStores();
87   
88   void MakeReconstructedTracks(Bool_t refit);
89         
90   void MakeTriggeredTracks();
91   
92   void MakeTrackRefs();
93   
94   void CleanMuonTrackRef(const AliMUONVTrackStore *tmpTrackRefStore);
95   
96   void MakeReconstructibleTracks(UInt_t requestedStationMask, Bool_t request2ChInSameSt45 = kTRUE,
97                                  Bool_t hitInFrontOfPad = kFALSE);
98         
99   void MakeTriggerableTracks();
100         
101   Bool_t InitCircuit();
102   Bool_t InitTriggerResponse();
103   Bool_t InitCalibrationData();
104   Bool_t InitGeometryTransformer();
105
106   Bool_t IsHitInFrontOfPad(AliMUONTrackParam *param) const;
107   
108 private:
109   AliMCEventHandler* fMCEventHandler; ///< to access MC truth information
110   AliESDEvent* fESDEvent; ///< ESD event to access MUON data
111   TTree* fESDTree;        ///< ESD tree to access MUON data
112   TFile* fESDFile;        ///< ESD file to access MUON data
113   
114   Int_t fCurrentEvent; ///< current event number
115   
116   AliMUONVTrackStore* fTrackRefStore;     ///< current simulated tracks (owner)
117   AliMUONVTrackStore* fRecoTrackRefStore; ///< current reconstructible tracks (owner)
118   AliMUONVTriggerTrackStore* fRecoTriggerRefStore; ///< current triggerable tracks (owner)
119   AliMUONVTrackStore* fRecoTrackStore;    ///< current reconstructed tracks (owner)
120   AliMUONVTriggerTrackStore* fRecoTriggerTrackStore;    ///< current reconstructed trigger tracks (owner)
121         
122   AliMUONGeometryTransformer* fGeometryTransformer; ///< geometry transformer
123   AliMUONTriggerCircuit* fTriggerCircuit; ///< trigger circuit
124   AliMUONCalibrationData* fCalibrationData; //!< Used to load Local, Regional and Global masks
125   AliMUONTriggerElectronics* fTriggerElectronics; ///< object to re-compute the trigger info
126   
127   Bool_t fESDEventOwner;         ///< using constructor from the analysis task
128
129   ClassDef(AliMUONRecoCheck, 0)   //Utility class to check reconstruction
130 };
131
132 #endif
133