ROOT logo
#ifndef ALIPHOSTRIGGERRAWDIGIPRODUCER_H
#define ALIPHOSTRIGGERRAWDIGIPRODUCER_H
/* Copyright(c) 2007, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                          */

class AliPHOSTriggerRawReader;
class AliPHOSTriggerParameters;
class AliRawReader;
class AliCaloRawStreamV3;

#include "TString.h"
#include "TClonesArray.h"

#include <vector>

class AliPHOSTriggerRawDigiProducer
{
 public:
  
  AliPHOSTriggerRawDigiProducer();
  AliPHOSTriggerRawDigiProducer(AliRawReader *rawReader);
  
  virtual ~AliPHOSTriggerRawDigiProducer();
  
  void ProcessEvent(TClonesArray* tdigits);

  void SetTriggerParameters(AliPHOSTriggerParameters* parameters) {fParameters = parameters;}
  void SetAnalyseModule(int mod, bool analyse = true) {fModules[mod] = analyse;}
    
  static int Get2x2Max(AliPHOSTriggerRawReader*, AliPHOSTriggerParameters*, int mod, int xIdx, int zIdx);
  static int Get2x2Signal(AliPHOSTriggerRawReader*, AliPHOSTriggerParameters*, int mod, int xIdx, int zIdx, int timeBin);
  static int Get4x4Max(AliPHOSTriggerRawReader*, AliPHOSTriggerParameters*, int mod, int TRURow, int branch, int xIdx, int zIdx);
  static int Get4x4Signal(AliPHOSTriggerRawReader*, AliPHOSTriggerParameters*, int mod, int TRURow, int branch, int xIdx, int zIdx, int timeBin);
  
  static bool Is2x2Active(AliPHOSTriggerRawReader*, int mod, int xIdx, int zIdx);
  static bool Is2x2Active(AliPHOSTriggerRawReader*, int mod, int xIdx, int zIdx, int timeBin);
    
  const static int kNMods = 5; // number of PHOS modules
  const static int kNTRURows = 4; // number of TRU rows
  const static int kNBranches = 2; // number of branches
  const static int kN2x2X = 32; // (=64/2) Number of 2x2 in X direction
  const static int kN2x2Z = 28; // (=56/2) Number of 2x2 in Z direction
  const static Int_t kN2x2XPrTRURow = 8; // (=64/2/4) Number of 2x2 pr. row
  const static Int_t kN2x2ZPrBranch = 14; // (=56/2/2) Number of 2x2 pr. branch
  const static Int_t kN4x4XPrTRURow = 7; // (=64/2/4 -1) Number of 4x4 pr. row
  const static Int_t kN4x4ZPrBranch = 13; // (=56/2/2) -1 Number of 4x4 pr. branch  
  const static int kNTRUTimeBins = 128; // number of TRU time bins
  const static int kNDefaultNEMCTimeBins = 62;

 private:  
  AliPHOSTriggerRawDigiProducer(const AliPHOSTriggerRawDigiProducer &tdp); // not implemented
  AliPHOSTriggerRawDigiProducer& operator= (const AliPHOSTriggerRawDigiProducer &tdp); // not implemented

 protected:
  std::vector<bool> fModules; // , per module: should analyser analyse module
  UShort_t fSaturationThreshold;
  AliPHOSTriggerParameters* fParameters;
  
private:
  AliRawReader            * fRawReader;       //! Raw data reader
  AliCaloRawStreamV3      * fRawStream;       //! Calorimeter decoder of ALTRO format
  AliPHOSTriggerRawReader * fTriggerReader;   //! TriggerRawReader

  ClassDef(AliPHOSTriggerRawDigiProducer,1)
};

#endif
 AliPHOSTriggerRawDigiProducer.h:1
 AliPHOSTriggerRawDigiProducer.h:2
 AliPHOSTriggerRawDigiProducer.h:3
 AliPHOSTriggerRawDigiProducer.h:4
 AliPHOSTriggerRawDigiProducer.h:5
 AliPHOSTriggerRawDigiProducer.h:6
 AliPHOSTriggerRawDigiProducer.h:7
 AliPHOSTriggerRawDigiProducer.h:8
 AliPHOSTriggerRawDigiProducer.h:9
 AliPHOSTriggerRawDigiProducer.h:10
 AliPHOSTriggerRawDigiProducer.h:11
 AliPHOSTriggerRawDigiProducer.h:12
 AliPHOSTriggerRawDigiProducer.h:13
 AliPHOSTriggerRawDigiProducer.h:14
 AliPHOSTriggerRawDigiProducer.h:15
 AliPHOSTriggerRawDigiProducer.h:16
 AliPHOSTriggerRawDigiProducer.h:17
 AliPHOSTriggerRawDigiProducer.h:18
 AliPHOSTriggerRawDigiProducer.h:19
 AliPHOSTriggerRawDigiProducer.h:20
 AliPHOSTriggerRawDigiProducer.h:21
 AliPHOSTriggerRawDigiProducer.h:22
 AliPHOSTriggerRawDigiProducer.h:23
 AliPHOSTriggerRawDigiProducer.h:24
 AliPHOSTriggerRawDigiProducer.h:25
 AliPHOSTriggerRawDigiProducer.h:26
 AliPHOSTriggerRawDigiProducer.h:27
 AliPHOSTriggerRawDigiProducer.h:28
 AliPHOSTriggerRawDigiProducer.h:29
 AliPHOSTriggerRawDigiProducer.h:30
 AliPHOSTriggerRawDigiProducer.h:31
 AliPHOSTriggerRawDigiProducer.h:32
 AliPHOSTriggerRawDigiProducer.h:33
 AliPHOSTriggerRawDigiProducer.h:34
 AliPHOSTriggerRawDigiProducer.h:35
 AliPHOSTriggerRawDigiProducer.h:36
 AliPHOSTriggerRawDigiProducer.h:37
 AliPHOSTriggerRawDigiProducer.h:38
 AliPHOSTriggerRawDigiProducer.h:39
 AliPHOSTriggerRawDigiProducer.h:40
 AliPHOSTriggerRawDigiProducer.h:41
 AliPHOSTriggerRawDigiProducer.h:42
 AliPHOSTriggerRawDigiProducer.h:43
 AliPHOSTriggerRawDigiProducer.h:44
 AliPHOSTriggerRawDigiProducer.h:45
 AliPHOSTriggerRawDigiProducer.h:46
 AliPHOSTriggerRawDigiProducer.h:47
 AliPHOSTriggerRawDigiProducer.h:48
 AliPHOSTriggerRawDigiProducer.h:49
 AliPHOSTriggerRawDigiProducer.h:50
 AliPHOSTriggerRawDigiProducer.h:51
 AliPHOSTriggerRawDigiProducer.h:52
 AliPHOSTriggerRawDigiProducer.h:53
 AliPHOSTriggerRawDigiProducer.h:54
 AliPHOSTriggerRawDigiProducer.h:55
 AliPHOSTriggerRawDigiProducer.h:56
 AliPHOSTriggerRawDigiProducer.h:57
 AliPHOSTriggerRawDigiProducer.h:58
 AliPHOSTriggerRawDigiProducer.h:59
 AliPHOSTriggerRawDigiProducer.h:60
 AliPHOSTriggerRawDigiProducer.h:61
 AliPHOSTriggerRawDigiProducer.h:62
 AliPHOSTriggerRawDigiProducer.h:63
 AliPHOSTriggerRawDigiProducer.h:64
 AliPHOSTriggerRawDigiProducer.h:65
 AliPHOSTriggerRawDigiProducer.h:66
 AliPHOSTriggerRawDigiProducer.h:67