- Apply trigger algorithm to MC tracks when defining a triggerable track (for perform...
[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 AliMUONTriggerTrack;
24 class AliMUONGeometryTransformer;
25 class AliMUONTriggerCircuit;
26 class AliMUONLocalTrigger;
27 class AliMUONCalibrationData;
28 class AliMUONTriggerElectronics;
29
30 class AliMUONRecoCheck : public TObject 
31 {
32 public:
33   AliMUONRecoCheck(const Char_t *chLoader, const Char_t *pathSim = "./");
34   AliMUONRecoCheck(AliESDEvent *esdEvent, AliMCEventHandler *mcEventHandler);
35   virtual ~AliMUONRecoCheck();
36
37   /// Return the list of reconstructed tracks
38   AliMUONVTrackStore* ReconstructedTracks(Int_t event, Bool_t refit = kTRUE);
39
40   /// Return the list of reconstructed trigger tracks
41   AliMUONVTriggerTrackStore* TriggeredTracks(Int_t event);
42
43   void TriggerToTrack(const AliMUONLocalTrigger& locTrg, AliMUONTriggerTrack& triggerTrack);
44         
45   /// Return reference muon tracks
46   AliMUONVTrackStore* TrackRefs(Int_t event);
47
48   /// Return triggerable reference tracks
49   AliMUONVTriggerTrackStore* TriggerableTracks(Int_t event);
50         
51   /// Return reconstructible reference tracks
52   AliMUONVTrackStore* ReconstructibleTracks(Int_t event, UInt_t requestedStationMask = 0x1F, Bool_t request2ChInSameSt45 = kTRUE);
53
54         
55   /// Return the run number of the current ESD event
56   Int_t GetRunNumber();
57   
58   /// Return the total number of events.
59   Int_t NumberOfEvents() const;
60   
61   /// Return the reconstructed data of current event
62   const AliESDEvent* GetESDEvent() const { return fESDEvent; }
63   
64   /// Return the interface to the Monte Carlo data of current event
65   const AliMCEventHandler* GetMCEventHandler() const { return fMCEventHandler; }
66   
67   /// Return the track from the store matched with the given track (or 0x0) and the fraction of matched clusters.
68   static AliMUONTrack* FindCompatibleTrack(AliMUONTrack &track, AliMUONVTrackStore &trackStore,
69                                            Int_t &nMatchClusters, Bool_t useLabel = kFALSE, Double_t sigmaCut = 10.);
70   
71   /// Return the trigger track from the store matched with the given track (or 0x0)
72   static AliMUONTriggerTrack* FindCompatibleTrack(AliMUONTriggerTrack &track,
73                                                   const AliMUONVTriggerTrackStore &triggerTrackStore,
74                                                   Double_t sigmaCut = 10.);
75   
76 private:
77   /// Not implemented
78   AliMUONRecoCheck(const AliMUONRecoCheck& rhs);
79   /// Not implemented
80   AliMUONRecoCheck& operator = (const AliMUONRecoCheck& rhs);
81
82   void ResetStores();
83   
84   void MakeReconstructedTracks(Bool_t refit);
85         
86   void MakeTriggeredTracks();
87   
88   void MakeTrackRefs();
89   
90   void CleanMuonTrackRef(const AliMUONVTrackStore *tmpTrackRefStore);
91   
92   void MakeReconstructibleTracks(UInt_t requestedStationMask, Bool_t request2ChInSameSt45 = kTRUE);
93         
94   void MakeTriggerableTracks();
95         
96   Bool_t InitCircuit();
97   Bool_t InitTriggerResponse();
98   Bool_t InitCalibrationData();
99   Bool_t InitGeometryTransformer();
100
101 private:
102   AliMCEventHandler* fMCEventHandler; ///< to access MC truth information
103   AliESDEvent* fESDEvent; ///< ESD event to access MUON data
104   TTree* fESDTree;        ///< ESD tree to access MUON data
105   TFile* fESDFile;        ///< ESD file to access MUON data
106   
107   Int_t fCurrentEvent; ///< current event number
108   
109   AliMUONVTrackStore* fTrackRefStore;     ///< current simulated tracks (owner)
110   AliMUONVTrackStore* fRecoTrackRefStore; ///< current reconstructible tracks (owner)
111   AliMUONVTriggerTrackStore* fRecoTriggerRefStore; ///< current triggerable tracks (owner)
112   AliMUONVTrackStore* fRecoTrackStore;    ///< current reconstructed tracks (owner)
113   AliMUONVTriggerTrackStore* fRecoTriggerTrackStore;    ///< current reconstructed trigger tracks (owner)
114         
115   AliMUONGeometryTransformer* fGeometryTransformer; ///< geometry transformer
116   AliMUONTriggerCircuit* fTriggerCircuit; ///< trigger circuit
117   AliMUONCalibrationData* fCalibrationData; //!< Used to load Local, Regional and Global masks
118   AliMUONTriggerElectronics* fTriggerElectronics; ///< object to re-compute the trigger info
119   
120   Bool_t fESDEventOwner;         ///< using constructor from the analysis task
121
122   ClassDef(AliMUONRecoCheck, 0)   //Utility class to check reconstruction
123 };
124
125 #endif
126