]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PHOS/AliPHOSTriggerRawDigiProducer.h
Always delete TObjArrays created by TString::Tokenize (Ruben)
[u/mrichter/AliRoot.git] / PHOS / AliPHOSTriggerRawDigiProducer.h
1 #ifndef ALIPHOSTRIGGERRAWDIGIPRODUCER_H
2 #define ALIPHOSTRIGGERRAWDIGIPRODUCER_H
3 /* Copyright(c) 2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                          */
5
6 class AliPHOSTriggerRawReader;
7 class AliPHOSTriggerParameters;
8 class AliRawReader;
9 class AliCaloRawStreamV3;
10
11 #include "TString.h"
12 #include "TClonesArray.h"
13
14 #include <vector>
15
16 class AliPHOSTriggerRawDigiProducer
17 {
18  public:
19   
20   AliPHOSTriggerRawDigiProducer();
21   AliPHOSTriggerRawDigiProducer(AliRawReader *rawReader);
22   
23   virtual ~AliPHOSTriggerRawDigiProducer();
24   
25   void ProcessEvent(TClonesArray* tdigits);
26
27   void SetTriggerParameters(AliPHOSTriggerParameters* parameters) {fParameters = parameters;}
28   void SetAnalyseModule(int mod, bool analyse = true) {fModules[mod] = analyse;}
29     
30   static int Get2x2Max(AliPHOSTriggerRawReader*, AliPHOSTriggerParameters*, int mod, int xIdx, int zIdx);
31   static int Get2x2Signal(AliPHOSTriggerRawReader*, AliPHOSTriggerParameters*, int mod, int xIdx, int zIdx, int timeBin);
32   static int Get4x4Max(AliPHOSTriggerRawReader*, AliPHOSTriggerParameters*, int mod, int TRURow, int branch, int xIdx, int zIdx);
33   static int Get4x4Signal(AliPHOSTriggerRawReader*, AliPHOSTriggerParameters*, int mod, int TRURow, int branch, int xIdx, int zIdx, int timeBin);
34   
35   static bool Is2x2Active(AliPHOSTriggerRawReader*, int mod, int xIdx, int zIdx);
36   static bool Is2x2Active(AliPHOSTriggerRawReader*, int mod, int xIdx, int zIdx, int timeBin);
37     
38   const static int kNMods = 5; // number of PHOS modules
39   const static int kNTRURows = 4; // number of TRU rows
40   const static int kNBranches = 2; // number of branches
41   const static int kN2x2X = 32; // (=64/2) Number of 2x2 in X direction
42   const static int kN2x2Z = 28; // (=56/2) Number of 2x2 in Z direction
43   const static Int_t kN2x2XPrTRURow = 8; // (=64/2/4) Number of 2x2 pr. row
44   const static Int_t kN2x2ZPrBranch = 14; // (=56/2/2) Number of 2x2 pr. branch
45   const static Int_t kN4x4XPrTRURow = 7; // (=64/2/4 -1) Number of 4x4 pr. row
46   const static Int_t kN4x4ZPrBranch = 13; // (=56/2/2) -1 Number of 4x4 pr. branch  
47   const static int kNTRUTimeBins = 128; // number of TRU time bins
48   const static int kNDefaultNEMCTimeBins = 62;
49
50  private:  
51   AliPHOSTriggerRawDigiProducer(const AliPHOSTriggerRawDigiProducer &tdp); // not implemented
52   AliPHOSTriggerRawDigiProducer& operator= (const AliPHOSTriggerRawDigiProducer &tdp); // not implemented
53
54  protected:
55   std::vector<bool> fModules; // , per module: should analyser analyse module
56   UShort_t fSaturationThreshold;
57   AliPHOSTriggerParameters* fParameters;
58   
59 private:
60   AliRawReader            * fRawReader;       //! Raw data reader
61   AliCaloRawStreamV3      * fRawStream;       //! Calorimeter decoder of ALTRO format
62   AliPHOSTriggerRawReader * fTriggerReader;   //! TriggerRawReader
63
64   ClassDef(AliPHOSTriggerRawDigiProducer,1)
65 };
66
67 #endif