LCOV - code coverage report
Current view: top level - PHOS/PHOSbase - AliPHOSTrigger.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 45 2.2 %
Date: 2016-06-14 17:26:59 Functions: 1 49 2.0 %

          Line data    Source code
       1             : #ifndef ALIPHOSTrigger_H
       2             : #define ALIPHOSTrigger_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : /* $Id$ */
       7             : 
       8             : //____________________________________________________________
       9             : //  Class for trigger analysis.
      10             : //
      11             : //  -- Author: Gustavo Conesa & Yves Schutz (IFIC, SUBATECH, CERN)
      12             : //  Digits are grouped in TRU's (Trigger Units). A TRU consist of 16x28 
      13             : //  crystals ordered fNTRUPhi x fNTRUZ matrix. The algorithm searches all possible 
      14             : //  2x2 and nxn (n multiple of 4) crystal combinations per each TRU, adding the 
      15             : //  digits amplitude and  finding the maximum. Iti is found is maximum is isolated.
      16             : //  Maxima are transformed in ADC time samples. Each time bin is compared to the trigger 
      17             : //  threshold until it is larger and then, triggers are set. Thresholds need to be fixed. 
      18             : //  Usage:
      19             : //
      20             : //  //Inside the event loop
      21             : //  AliEMCALTrigger *tr = new AliEMCALTrigger();//Init Trigger
      22             : //  tr->SetL0Threshold(100);
      23             : //  tr->SetL1JetLowPtThreshold(1000);
      24             : //  tr->SetL1JetMediumPtThreshold(10000);
      25             : //  tr->SetL1JetHighPtThreshold(20000);
      26             : //  ....
      27             : //  tr->Trigger(); //Execute Trigger
      28             : //  tr->Print(""); //Print data members after calculation.
      29             : //     
      30             : // --- ROOT system ---
      31             : 
      32             : class TClonesArray ;
      33             : #include "TMatrixD.h"
      34             : 
      35             : // --- AliRoot header files ---
      36             : #include "AliTriggerDetector.h"
      37             : 
      38             : class AliPHOSGeometry ;
      39             : 
      40             : class AliPHOSTrigger : public AliTriggerDetector {
      41             :   
      42             :  public: 
      43             :   
      44             :   AliPHOSTrigger() ; //  ctor
      45             :   AliPHOSTrigger(const AliPHOSTrigger & trig) ; // cpy ctor
      46             :   virtual ~AliPHOSTrigger();
      47             : 
      48             :   virtual void    CreateInputs(); //Define trigger inputs for Central Trigger Processor
      49             :   void            Print(const Option_t * opt ="") const ;  
      50           0 :   virtual void    Trigger() {}                   //Make PHOS trigger
      51             :   void            Trigger(TClonesArray *digits); //Make PHOS trigger
      52             : 
      53             :   //Getters
      54           0 :   Float_t  Get2x2MaxAmplitude()  const {return f2x2MaxAmp ; }
      55           0 :   Float_t  GetnxnMaxAmplitude()  const {return fnxnMaxAmp ; }
      56           0 :   Int_t    Get2x2CrystalPhi()    const {return f2x2CrystalPhi ; }
      57           0 :   Int_t    GetnxnCrystalPhi()    const {return fnxnCrystalPhi ; }
      58           0 :   Int_t    Get2x2CrystalEta()    const {return f2x2CrystalEta ; }
      59           0 :   Int_t    GetnxnCrystalEta()    const {return fnxnCrystalEta ; }
      60           0 :   Int_t    Get2x2SuperModule()   const {return f2x2SM ; }
      61           0 :   Int_t    GetnxnSuperModule()   const {return fnxnSM ; }
      62             : 
      63           0 :   Int_t *  GetADCValuesLowGainMax2x2Sum()  {return fADCValuesLow2x2; }
      64           0 :   Int_t *  GetADCValuesHighGainMax2x2Sum() {return fADCValuesHigh2x2; }
      65           0 :   Int_t *  GetADCValuesLowGainMaxnxnSum()  {return fADCValuesLownxn; }
      66           0 :   Int_t *  GetADCValuesHighGainMaxnxnSum() {return fADCValuesHighnxn; }
      67             : 
      68             :   void     GetCrystalPhiEtaIndexInModuleFromTRUIndex(Int_t itru, Int_t iphitru, Int_t ietatru,Int_t &ietaMod,Int_t &iphiMod) const ;
      69             : 
      70           0 :   Float_t  GetL0Threshold()            const {return fL0Threshold ; } 
      71           0 :   Float_t  GetL1JetLowPtThreshold()    const {return fL1JetLowPtThreshold ; }
      72           0 :   Float_t  GetL1JetMediumPtThreshold() const {return fL1JetMediumPtThreshold ; }
      73           0 :   Float_t  GetL1JetHighPtThreshold()   const {return fL1JetHighPtThreshold ; }
      74             : 
      75           0 :   Int_t    GetNTRU()                   const {return fNTRU ; }
      76           0 :   Int_t    GetNTRUZ()                  const {return fNTRUZ ; }
      77           0 :   Int_t    GetNTRUPhi()                const {return fNTRUPhi ; }
      78             :   
      79           0 :   Int_t    GetPatchSize()              const {return fPatchSize ; }
      80           0 :   Int_t    GetIsolPatchSize()          const {return fIsolPatchSize ; }
      81             : 
      82           0 :   Float_t  Get2x2AmpOutOfPatch()       const {return  f2x2AmpOutOfPatch; }
      83           0 :   Float_t  GetnxnAmpOutOfPatch()       const {return  fnxnAmpOutOfPatch; }
      84           0 :   Float_t  Get2x2AmpOutOfPatchThres()  const {return  f2x2AmpOutOfPatchThres; }
      85           0 :   Float_t  GetnxnAmpOutOfPatchThres()  const {return  fnxnAmpOutOfPatchThres; }
      86             : 
      87           0 :   Bool_t   Is2x2Isol()                 const {return  fIs2x2Isol; }
      88           0 :   Bool_t   IsnxnIsol()                 const {return  fIsnxnIsol; }
      89             : 
      90           0 :   Bool_t   IsSimulation()              const {return fSimulation ; }
      91           0 :   Bool_t   IsIsolatedInModule()        const {return fIsolateInModule ; }
      92             : 
      93             :   //Setters
      94             :   void     SetDigitsList(TClonesArray * digits)          
      95           0 :    {fDigitsList  = digits ; }
      96             : 
      97           0 :   void     SetNTRU(Int_t ntru)             {fNTRU     = ntru ; }
      98           0 :   void     SetNTRUZ(Int_t ntru)            {fNTRUZ    = ntru ; }
      99           0 :   void     SetNTRUPhi(Int_t ntru)          {fNTRUPhi  = ntru ; } 
     100             : 
     101             :   void     SetL0Threshold(Int_t amp)         
     102           0 :     {fL0Threshold          = amp ; }
     103             :   void     SetL1JetLowPtThreshold(Int_t amp) 
     104           0 :     {fL1JetLowPtThreshold  = amp ; } 
     105             :   void     SetL1JetMediumPtThreshold(Int_t amp) 
     106           0 :     {fL1JetMediumPtThreshold = amp; } 
     107             :   void     SetL1JetHighPtThreshold(Int_t amp)
     108           0 :     {fL1JetHighPtThreshold = amp ; }
     109             : 
     110           0 :   void SetPatchSize(Int_t ps)               { fPatchSize = ps ; }
     111           0 :   void SetIsolPatchSize(Int_t ps)           { fIsolPatchSize = ps ; }
     112           0 :   void Set2x2AmpOutOfPatchThres(Float_t th) { f2x2AmpOutOfPatchThres = th; }
     113           0 :   void SetnxnAmpOutOfPatchThres(Float_t th) { fnxnAmpOutOfPatchThres = th; }
     114           0 :   void SetSimulation(Bool_t sim )           { fSimulation = sim ; }
     115           0 :   void SetIsolateInModule(Bool_t isol )     { fIsolateInModule = isol ; }
     116             : 
     117             :  private:
     118             : 
     119             :   AliPHOSTrigger & operator = (const AliPHOSTrigger & trig) ;//cpy assignment
     120             : 
     121             :   void FillTRU(const TClonesArray * digits, const AliPHOSGeometry * geom) const ;
     122             : 
     123             :   Bool_t IsPatchIsolated(Int_t iPatchType, const Int_t imod, const Int_t mtru, const Float_t maxamp, const Int_t maxphi, const Int_t maxeta) ;
     124             : 
     125             :   void MakeSlidingCell(Int_t mod, TMatrixD &ampmax2, TMatrixD &ampmaxn) ;
     126             : 
     127             :   void SetTriggers(Int_t iMod, const TMatrixD &ampmax2,const TMatrixD &ampmaxn) ;
     128             : 
     129             :   void DoIt() ; 
     130             :  
     131             :  private: 
     132             : 
     133             :   Float_t f2x2MaxAmp ;     //! Maximum 2x2 added amplitude (not overlapped) 
     134             :   Int_t   f2x2CrystalPhi ; //! upper right cell, row(phi)   
     135             :   Int_t   f2x2CrystalEta ; //! and column(eta) 
     136             :   Int_t   f2x2SM ;         //! Module where maximum is found
     137             :   Float_t fnxnMaxAmp ;     //! Maximum nxn added amplitude (overlapped)
     138             :   Int_t   fnxnCrystalPhi ; //! upper right cell, row(phi)   
     139             :   Int_t   fnxnCrystalEta ; //! and column(eta)
     140             :   Int_t   fnxnSM ;         //! Module where maximum is found
     141             : 
     142             :   Int_t*   fADCValuesHighnxn ; //! Sampled ADC high gain values for the nxn crystals amplitude sum
     143             :   Int_t*   fADCValuesLownxn  ; //! " low gain  " 
     144             :   Int_t*   fADCValuesHigh2x2 ; //! " high gain " 2x2 "
     145             :   Int_t*   fADCValuesLow2x2  ; //! " low gaing " "
     146             : 
     147             :   TClonesArray* fDigitsList ;  //  Array of digits 
     148             :   TClonesArray* fAmptrus    ;  //! Array of matrices with amplitudes per TRU
     149             :   TClonesArray* fAmpmods    ;  //! Array of matrices with amplitudes per module
     150             :   TClonesArray* fTimeRtrus  ;  //! Array of matrices with time
     151             :   
     152             :  
     153             :   Float_t fL0Threshold ;             //! L0 trigger energy threshold
     154             :   Float_t fL1JetLowPtThreshold ;     //! L1 Low  pT trigger threshold
     155             :   Float_t fL1JetMediumPtThreshold ;  //! L1 Medium  pT trigger threshold
     156             :   Float_t fL1JetHighPtThreshold ;    //! L1 High pT trigger threshold
     157             : 
     158             :   Int_t   fNTRU ;                //! Number of TRUs per module
     159             :   Int_t   fNTRUZ ;               //! Number of crystal rows per Z in one TRU
     160             :   Int_t   fNTRUPhi ;             //! Number of crystal rows per Phi in one TRU
     161             :   Int_t   fNCrystalsPhi;         //! Number of rows in a TRU
     162             :   Int_t   fNCrystalsZ;           //! Number of columns in a TRU
     163             :   
     164             :   Int_t fPatchSize;              //! Trigger patch factor, to be multiplied to 2x2 cells
     165             :                                  //  0 means 2x2, 1 means 4x4, 2 means 6x6 ...
     166             :   Int_t fIsolPatchSize ;         //  Isolation patch size, number of rows or columns to add to 
     167             :                                  //  the 2x2 or nxn maximum amplitude patch. 
     168             :                                  //  1 means a patch around max amplitude of 2x2 of 4x4 and around         
     169             :                                  //  max ampl patch of 4x4 of 8x8 
     170             :     
     171             :   Float_t f2x2AmpOutOfPatch;      // Amplitude in isolation cone minus maximum amplitude of the reference patch
     172             :   Float_t fnxnAmpOutOfPatch; 
     173             :   Float_t f2x2AmpOutOfPatchThres; // Threshold to select a trigger as isolated on f2x2AmpOutOfPatch value
     174             :   Float_t fnxnAmpOutOfPatchThres; 
     175             :   Float_t fIs2x2Isol;             //Patch is isolated if f2x2AmpOutOfPatchThres threshold is passed
     176             :   Float_t fIsnxnIsol ; 
     177             :   
     178             :   Bool_t  fSimulation ;           //! Flag to do the trigger during simulation or reconstruction
     179             :   Bool_t  fIsolateInModule;       //! Flag to isolate trigger patch in Module or in TRU acceptance
     180             : 
     181          22 :   ClassDef(AliPHOSTrigger,5)
     182             : } ;
     183             : 
     184             : 
     185             : #endif //ALIPHOSTrigger_H

Generated by: LCOV version 1.11