]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/AliPHOSTrigger.h
New comments added to clarify the code
[u/mrichter/AliRoot.git] / PHOS / AliPHOSTrigger.h
1 #ifndef ALIPHOSTrigger_H
2 #define ALIPHOSTrigger_H
3
4 //____________________________________________________________
5 //  Class for trigger analysis.
6 //  Class for trigger analysis.
7 //  Digits are grouped in TRU's (16x28 ordered fNTRUPhi x fNTRUEta). 
8 //  The algorithm searches all possible 4x4 cell combinations per each TRU, 
9 //  adding the digits amplitude and finding the maximum. Maximums are compared 
10 //  to triggers threshold and they are set. Thresholds need to be fixed. 
11 //  Usage:
12 //
13 //  //Inside the event loop
14 //  AliEMCALTrigger *tr = new AliEMCALTrigger();//Init Trigger
15 //  tr->SetL0MBPbPbThreshold(500);
16 //  tr->SetL0MBppThreshold(100);
17 //  tr->SetL1JetLowPtThreshold(1000);
18 //  tr->SetL1JetMediumPtThreshold(10000);
19 //  tr->SetL1JetHighPtThreshold(20000);
20 //  tr->Trigger(); //Execute Trigger
21 //  tr->Print(""); //Print result, with "deb" option all data members 
22 //  //are printed
23 //
24 //*-- Author: Gustavo Conesa & Yves Schutz (IFIC, SUBATECH, CERN)
25      
26 // --- ROOT system ---
27
28 class TClonesArray ;
29
30 // --- AliRoot header files ---
31 #include "AliTriggerDetector.h"
32
33 class AliPHOSGeometry ;
34
35 class AliPHOSTrigger : public AliTriggerDetector {
36   
37  public:   
38   AliPHOSTrigger() ; //  ctor
39   AliPHOSTrigger(const AliPHOSTrigger & trig) ; // cpy ctor
40   virtual ~AliPHOSTrigger() {}; //virtual dtor
41   virtual void    CreateInputs();
42   virtual void    Trigger();  //Make PHOS trigger
43   
44   Int_t  GetNTRU() const                 {return fNTRU ; }  
45   Int_t  GetNTRUZ() const                {return fNTRUZ ; }  
46   Int_t  GetNTRUPhi() const              {return fNTRUPhi ; }  
47   Int_t  GetL0MBPbPbThreshold() const    {return fL0MBPbPbThreshold ; } 
48   Int_t  GetL0MBppThreshold() const      {return fL0MBppThreshold ; } 
49   Int_t  GetL1JetLowPtThreshold() const  {return fL1JetLowPtThreshold ; }
50   Int_t  GetL1JetHighPtThreshold() const {return fL1JetHighPtThreshold ; }
51
52   void         Print(const Option_t * opt ="") const ;  
53
54   void         SetNTRU(Int_t ntru)               {fNTRU              = ntru; }
55   void         SetNTRUZ(Int_t ntru)              {fNTRUZ             = ntru; }
56   void         SetNTRUPhi(Int_t ntru)            {fNTRUPhi           = ntru; }
57   void         SetL0MBPbPbThreshold(Int_t amp)   {fL0MBPbPbThreshold   = amp; }
58   void         SetL0MBppThreshold(Int_t amp)     {fL0MBppThreshold     = amp; }
59   void         SetL1JetLowPtThreshold(Int_t amp) 
60     {fL1JetLowPtThreshold  = amp; } 
61   void         SetL1JetHighPtThreshold(Int_t amp)
62     {fL1JetHighPtThreshold = amp; }
63
64  private:
65   TClonesArray *  FillTRU(const TClonesArray * digits, 
66                           const AliPHOSGeometry * geom, const Int_t nModules, 
67                           const Int_t nCrystalsPhi, const Int_t nCrystalsZ) const ;
68   void MakeSlidingCell(const TClonesArray * trus, const Int_t mod,
69                        const Int_t nCrystalsPhi, const Int_t nCrystalsZ, 
70                        Float_t *ampmax) ;
71   void SetTriggers(const Float_t * ampmax) ;
72
73
74  private: 
75
76   Int_t    fNTRU ;                 //! Number of TRUs per module
77   Int_t    fNTRUZ ;                //! Number of crystal rows per Z in one TRU
78   Int_t    fNTRUPhi ;              //! Number of crystal rows per Phi in one TRU
79   Int_t    fL0MBPbPbThreshold ;    //! L0 PbPb trigger energy threshold
80   Int_t    fL0MBppThreshold ;      //! L0 pp trigger energy threshold
81   Int_t    fL1JetLowPtThreshold ;  //! Low and High pT trigger energy threshold
82   Int_t    fL1JetHighPtThreshold ; //! 
83
84   ClassDef(AliPHOSTrigger,3)
85 } ;
86
87
88 #endif //ALIPHOSTrigger_H