]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONTriggerChamberEff.h
Decalibration should use the same CDB as calibration in AliPHOSClusterizerv1
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerChamberEff.h
1 #ifndef ALIMUONTRIGGERCHAMBEREFF_H
2 #define ALIMUONTRIGGERCHAMBEREFF_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /// \ingroup base
7 /// \class AliMUONTriggerChamberEff
8 /// \brief trigger chamber efficiency from data
9 ///
10 //  Author Diego Stocco
11
12 #include <TObject.h>
13 #include <TString.h>
14 #include "AliMUONGeometryTransformer.h"
15
16 class AliRunLoader;
17 class AliMUONData;
18 class AliMUON;
19 class AliMUONGlobalTrigger;
20 class TString;
21
22 class AliMUONTriggerChamberEff : public TObject
23 {
24 public:
25     AliMUONTriggerChamberEff(const char* galiceFile, Int_t firstEvent=0, Int_t lastEvent=-1);
26     AliMUONTriggerChamberEff(Int_t firstRun, Int_t lastRun, const char* galiceRunDir, Int_t firstEvent=0, Int_t lastEvent=-1);
27     virtual ~AliMUONTriggerChamberEff();
28
29     /// Set Reproduce trigger response
30     void SetReproduceTrigResponse(Bool_t reproduceTrigRes=kFALSE)
31     {fReproduceTrigResponse=reproduceTrigRes;}
32     /// Set Print informations on event
33     void SetPrintInfo(Bool_t printInfo=kFALSE)
34     {fPrintInfo=printInfo;}
35     /// Set Debug level
36     void SetDebugLevel(Int_t debugLevel)
37     {fDebugLevel=debugLevel;}
38
39     void PerformTriggerChamberEff(const char* outputDir);
40
41     
42 private:
43     /// Not implemented
44     AliMUONTriggerChamberEff(const AliMUONTriggerChamberEff& other);
45     /// Not implemented
46     AliMUONTriggerChamberEff& operator=(const AliMUONTriggerChamberEff& other);
47     
48     void SetGaliceFile(const char* galiceFile);
49     void CleanGalice();
50     
51     Int_t   fFirstEvent; //!< First event to consider
52     Int_t   fLastEvent;  //!< Last event to consider
53     Int_t   fFirstRun; //!< First run to consider
54     Int_t   fLastRun;  //!< Last run to consider
55     AliRunLoader* fRunLoader; //!< AliRunLoader pointer
56     AliMUONData*  fData; //!< AliMUONData pointer (to access containers)
57     Bool_t fReproduceTrigResponse;//!< Reproduce trigger response
58     Bool_t fPrintInfo;//!< Print informations on event
59     AliMUON *fMUON; //!< AliMUON pointer
60     Int_t fDebugLevel; //!< Debug level
61     TString fGaliceDir; //!< base directory for many runs.
62
63     static const Int_t fgkNchambers=4; //!< Number of trigger chambers
64     static const Int_t fgkNcathodes=2; //!< Number of cathodes per chamber
65     static const Int_t fgkNslats=18;   //!< Number of slats per chamber
66     static const Int_t fgkNboards=234; //!< Number of trigger boards per chamber
67
68     Int_t fTrigger34[fgkNchambers][fgkNcathodes];//!< Array counting # of times chamber was inefficient
69     Int_t fTrigger44[fgkNcathodes];//!< Array counting # of times all chambers were efficient
70     Int_t fInefficientSlat[fgkNchambers][fgkNcathodes][fgkNslats];//!< Array counting # of times slats were inefficient
71     Int_t fHitPerSlat[fgkNchambers][fgkNcathodes][fgkNslats];//!< Array counting # of times slats were efficient
72     Int_t fInefficientBoard[fgkNchambers][fgkNcathodes][fgkNboards];//!< Array counting # of times boards were inefficient
73     Int_t fHitPerBoard[fgkNchambers][fgkNcathodes][fgkNboards];//!< Array counting # of times boards were efficient
74
75     
76 protected:
77     Int_t MatchingPad(Int_t &detElemId, Float_t coor[2], const AliMUONGeometryTransformer *kGeomTransformer,
78                       Bool_t isMatch[fgkNcathodes], Int_t nboard[fgkNcathodes][4], Float_t zRealMatch[fgkNchambers], Float_t y11);
79     Float_t PadMatchTrack(Float_t xPad, Float_t yPad, Float_t dpx, Float_t dpy,
80                          Float_t xTrackAtPad, Float_t yTrackAtPad, Int_t chamber);
81     void PrintTrigger(AliMUONGlobalTrigger *globalTrig);
82     void InfoDigit();
83     void CalculateEfficiency(Int_t trigger44, Int_t trigger34, Float_t &efficiency, Float_t &error, Bool_t failuresAsInput);
84     Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t cathode);
85     void LocalBoardFromPos(Float_t x, Float_t y, Int_t detElemId, Int_t cathode, Int_t localBoard[4]);
86     void ResetArrays();
87     void WriteOutput(const char* outputDir, Int_t totNumOfTrig[4][2], Int_t atLeast1MuPerEv[4][2]);
88     void WriteEfficiencyMap(const char* outputDir);
89     
90
91     ClassDef(AliMUONTriggerChamberEff,0) // Dumper of MUON related data
92 };
93 #endif