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 */
6 class AliPHOSTriggerRawReader;
7 class AliPHOSTriggerParameters;
9 class AliCaloRawStreamV3;
12 #include "TClonesArray.h"
16 class AliPHOSTriggerRawDigiProducer
20 AliPHOSTriggerRawDigiProducer();
21 AliPHOSTriggerRawDigiProducer(AliRawReader *rawReader);
23 virtual ~AliPHOSTriggerRawDigiProducer();
25 void ProcessEvent(TClonesArray* tdigits);
27 void SetTriggerParameters(AliPHOSTriggerParameters* parameters) {fParameters = parameters;}
28 void SetAnalyseModule(int mod, bool analyse = true) {fModules[mod] = analyse;}
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);
35 static bool Is2x2Active(AliPHOSTriggerRawReader*, int mod, int xIdx, int zIdx);
36 static bool Is2x2Active(AliPHOSTriggerRawReader*, int mod, int xIdx, int zIdx, int timeBin);
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;
51 AliPHOSTriggerRawDigiProducer(const AliPHOSTriggerRawDigiProducer &tdp); // not implemented
52 AliPHOSTriggerRawDigiProducer& operator= (const AliPHOSTriggerRawDigiProducer &tdp); // not implemented
55 std::vector<bool> fModules; // , per module: should analyser analyse module
56 UShort_t fSaturationThreshold;
57 AliPHOSTriggerParameters* fParameters;
60 AliRawReader * fRawReader; //! Raw data reader
61 AliCaloRawStreamV3 * fRawStream; //! Calorimeter decoder of ALTRO format
62 AliPHOSTriggerRawReader * fTriggerReader; //! TriggerRawReader
64 ClassDef(AliPHOSTriggerRawDigiProducer,1)