#include "AliPHOSTriggerRawDigiProducer.h"
#include "AliPHOSTriggerRawReader.h"
#include "AliPHOSTRURawReader.h"
#include "AliPHOSTriggerParameters.h"
#include "AliPHOSTriggerRawDigit.h"
#include "AliPHOSGeometry.h"
#include "AliRawReader.h"
#include "AliCaloRawStreamV3.h"
#include "TH1I.h"
#include "TH2I.h"
#include <iostream>
using namespace std;
ClassImp(AliPHOSTriggerRawDigiProducer)
AliPHOSTriggerRawDigiProducer::AliPHOSTriggerRawDigiProducer()
:fModules(kNMods, false),
fSaturationThreshold(950),
fParameters(0),
fRawReader(0),
fRawStream(0),
fTriggerReader(0)
{}
AliPHOSTriggerRawDigiProducer::AliPHOSTriggerRawDigiProducer(AliRawReader *rawReader)
:fModules(kNMods, false),
fSaturationThreshold(950),
fParameters(0),
fRawReader(rawReader),
fRawStream(0),
fTriggerReader(new AliPHOSTriggerRawReader)
{
SetAnalyseModule(2);
SetAnalyseModule(3);
SetAnalyseModule(4);
fRawStream = new AliCaloRawStreamV3(rawReader,"PHOS");
}
AliPHOSTriggerRawDigiProducer::~AliPHOSTriggerRawDigiProducer()
{
delete fRawStream;
delete fTriggerReader;
}
void AliPHOSTriggerRawDigiProducer::ProcessEvent(TClonesArray* tdigits)
{
fTriggerReader->Reset();
tdigits->Clear();
Int_t iDigit=0 ;
while (fRawStream->NextDDL()) {
while (fRawStream->NextChannel()) {
if (fRawStream->IsTRUData()) {
fTriggerReader->ReadFromStream(fRawStream);
}
}
}
for(unsigned int mod = 0; mod < fModules.size(); ++mod) {
if( fModules[mod] ) {
for(int TRURow = 0; TRURow < kNTRURows; ++TRURow) {
for(int branch = 0; branch < kNBranches; ++branch) {
AliPHOSTRURawReader* truReader = fTriggerReader->GetTRU(mod, TRURow, branch);
if( truReader->IsActive() ) {
for(int xIdx = 0; xIdx < kN4x4XPrTRURow; ++xIdx) {
for(int zIdx = 0; zIdx < kN4x4ZPrBranch; ++zIdx) {
bool triggered = false;
for(int timeBin = 0; timeBin < kNTRUTimeBins; ++timeBin){
if(truReader->IsActive(timeBin)) {
if( fTriggerReader->GetTRU(mod, TRURow, branch)->GetTriggerFlag(xIdx, zIdx, timeBin) ){
triggered = true;
}
}
}
if( triggered ){
const int TSmax = Get4x4Max(fTriggerReader, fParameters, mod, TRURow, branch, xIdx, zIdx);
new((*tdigits)[iDigit]) AliPHOSTriggerRawDigit(mod,xIdx,zIdx,TRURow,branch,TSmax);
iDigit++;
}
}
}
}
}
}
}
}
}
int AliPHOSTriggerRawDigiProducer::Get2x2Max(AliPHOSTriggerRawReader* reader, AliPHOSTriggerParameters* params, int mod, int xIdx, int zIdx)
{
int max = 0;
for(int timeBin = 0; timeBin < kNTRUTimeBins; ++timeBin) {
const int signal = Get2x2Signal(reader, params, mod, xIdx, zIdx, timeBin);
if( max < signal ){
max = signal;
}
}
return max;
}
int AliPHOSTriggerRawDigiProducer::Get2x2Signal(AliPHOSTriggerRawReader* reader, AliPHOSTriggerParameters* parameters, int mod, int xIdx, int zIdx, int timeBin)
{
const int TRURow = xIdx / kN2x2XPrTRURow;
const int branch = zIdx / kN2x2ZPrBranch;
const int TRUX = xIdx % kN2x2XPrTRURow;
const int TRUZ = zIdx % kN2x2ZPrBranch;
if( reader->GetTRU(mod, TRURow, branch)->IsActive() ){
const int signal = reader->GetTRU(mod, TRURow, branch)->GetTriggerSignal( TRUX, TRUZ, timeBin);
if( parameters )
return signal - parameters->GetTRUPedestal(mod, TRURow, branch, TRUX, TRUZ);
else
return signal - AliPHOSTRURawReader::GetDefaultSignalValue();
}
else
return 0;
}
int AliPHOSTriggerRawDigiProducer::Get4x4Max(AliPHOSTriggerRawReader* reader, AliPHOSTriggerParameters* params, int mod, int TRURow, int branch, int xIdx, int zIdx)
{
int max = 0;
for(int timeBin = 0; timeBin < kNTRUTimeBins; ++timeBin) {
const int signal = Get4x4Signal(reader, params, mod, TRURow, branch, xIdx, zIdx, timeBin);
if( max < signal ){
max = signal;
}
}
return max;
}
int AliPHOSTriggerRawDigiProducer::Get4x4Signal(AliPHOSTriggerRawReader* reader, AliPHOSTriggerParameters* params, int mod, int TRURow, int branch, int xIdx, int zIdx, int timeBin)
{
const int modX = xIdx + TRURow * kN2x2XPrTRURow;
const int modZ = zIdx + branch * kN2x2ZPrBranch;
const int signal
= Get2x2Signal(reader, params, mod, modX , modZ , timeBin)
+ Get2x2Signal(reader, params, mod, modX+1, modZ , timeBin)
+ Get2x2Signal(reader, params, mod, modX , modZ+1, timeBin)
+ Get2x2Signal(reader, params, mod, modX+1, modZ+1, timeBin);
return signal;
}
bool AliPHOSTriggerRawDigiProducer::Is2x2Active(AliPHOSTriggerRawReader* reader, int mod, int xIdx, int zIdx)
{
const int TRURow = xIdx / kN2x2XPrTRURow;
const int branch = zIdx / kN2x2ZPrBranch;
return reader->GetTRU(mod, TRURow, branch)->IsActive();
}
bool AliPHOSTriggerRawDigiProducer::Is2x2Active(AliPHOSTriggerRawReader* reader, int mod, int xIdx, int zIdx, int timeBin)
{
const int TRURow = xIdx / kN2x2XPrTRURow;
const int branch = zIdx / kN2x2ZPrBranch;
return reader->GetTRU(mod, TRURow, branch)->IsActive(timeBin);
}
AliPHOSTriggerRawDigiProducer.cxx:1 AliPHOSTriggerRawDigiProducer.cxx:2 AliPHOSTriggerRawDigiProducer.cxx:3 AliPHOSTriggerRawDigiProducer.cxx:4 AliPHOSTriggerRawDigiProducer.cxx:5 AliPHOSTriggerRawDigiProducer.cxx:6 AliPHOSTriggerRawDigiProducer.cxx:7 AliPHOSTriggerRawDigiProducer.cxx:8 AliPHOSTriggerRawDigiProducer.cxx:9 AliPHOSTriggerRawDigiProducer.cxx:10 AliPHOSTriggerRawDigiProducer.cxx:11 AliPHOSTriggerRawDigiProducer.cxx:12 AliPHOSTriggerRawDigiProducer.cxx:13 AliPHOSTriggerRawDigiProducer.cxx:14 AliPHOSTriggerRawDigiProducer.cxx:15 AliPHOSTriggerRawDigiProducer.cxx:16 AliPHOSTriggerRawDigiProducer.cxx:17 AliPHOSTriggerRawDigiProducer.cxx:18 AliPHOSTriggerRawDigiProducer.cxx:19 AliPHOSTriggerRawDigiProducer.cxx:20 AliPHOSTriggerRawDigiProducer.cxx:21 AliPHOSTriggerRawDigiProducer.cxx:22 AliPHOSTriggerRawDigiProducer.cxx:23 AliPHOSTriggerRawDigiProducer.cxx:24 AliPHOSTriggerRawDigiProducer.cxx:25 AliPHOSTriggerRawDigiProducer.cxx:26 AliPHOSTriggerRawDigiProducer.cxx:27 AliPHOSTriggerRawDigiProducer.cxx:28 AliPHOSTriggerRawDigiProducer.cxx:29 AliPHOSTriggerRawDigiProducer.cxx:30 AliPHOSTriggerRawDigiProducer.cxx:31 AliPHOSTriggerRawDigiProducer.cxx:32 AliPHOSTriggerRawDigiProducer.cxx:33 AliPHOSTriggerRawDigiProducer.cxx:34 AliPHOSTriggerRawDigiProducer.cxx:35 AliPHOSTriggerRawDigiProducer.cxx:36 AliPHOSTriggerRawDigiProducer.cxx:37 AliPHOSTriggerRawDigiProducer.cxx:38 AliPHOSTriggerRawDigiProducer.cxx:39 AliPHOSTriggerRawDigiProducer.cxx:40 AliPHOSTriggerRawDigiProducer.cxx:41 AliPHOSTriggerRawDigiProducer.cxx:42 AliPHOSTriggerRawDigiProducer.cxx:43 AliPHOSTriggerRawDigiProducer.cxx:44 AliPHOSTriggerRawDigiProducer.cxx:45 AliPHOSTriggerRawDigiProducer.cxx:46 AliPHOSTriggerRawDigiProducer.cxx:47 AliPHOSTriggerRawDigiProducer.cxx:48 AliPHOSTriggerRawDigiProducer.cxx:49 AliPHOSTriggerRawDigiProducer.cxx:50 AliPHOSTriggerRawDigiProducer.cxx:51 AliPHOSTriggerRawDigiProducer.cxx:52 AliPHOSTriggerRawDigiProducer.cxx:53 AliPHOSTriggerRawDigiProducer.cxx:54 AliPHOSTriggerRawDigiProducer.cxx:55 AliPHOSTriggerRawDigiProducer.cxx:56 AliPHOSTriggerRawDigiProducer.cxx:57 AliPHOSTriggerRawDigiProducer.cxx:58 AliPHOSTriggerRawDigiProducer.cxx:59 AliPHOSTriggerRawDigiProducer.cxx:60 AliPHOSTriggerRawDigiProducer.cxx:61 AliPHOSTriggerRawDigiProducer.cxx:62 AliPHOSTriggerRawDigiProducer.cxx:63 AliPHOSTriggerRawDigiProducer.cxx:64 AliPHOSTriggerRawDigiProducer.cxx:65 AliPHOSTriggerRawDigiProducer.cxx:66 AliPHOSTriggerRawDigiProducer.cxx:67 AliPHOSTriggerRawDigiProducer.cxx:68 AliPHOSTriggerRawDigiProducer.cxx:69 AliPHOSTriggerRawDigiProducer.cxx:70 AliPHOSTriggerRawDigiProducer.cxx:71 AliPHOSTriggerRawDigiProducer.cxx:72 AliPHOSTriggerRawDigiProducer.cxx:73 AliPHOSTriggerRawDigiProducer.cxx:74 AliPHOSTriggerRawDigiProducer.cxx:75 AliPHOSTriggerRawDigiProducer.cxx:76 AliPHOSTriggerRawDigiProducer.cxx:77 AliPHOSTriggerRawDigiProducer.cxx:78 AliPHOSTriggerRawDigiProducer.cxx:79 AliPHOSTriggerRawDigiProducer.cxx:80 AliPHOSTriggerRawDigiProducer.cxx:81 AliPHOSTriggerRawDigiProducer.cxx:82 AliPHOSTriggerRawDigiProducer.cxx:83 AliPHOSTriggerRawDigiProducer.cxx:84 AliPHOSTriggerRawDigiProducer.cxx:85 AliPHOSTriggerRawDigiProducer.cxx:86 AliPHOSTriggerRawDigiProducer.cxx:87 AliPHOSTriggerRawDigiProducer.cxx:88 AliPHOSTriggerRawDigiProducer.cxx:89 AliPHOSTriggerRawDigiProducer.cxx:90 AliPHOSTriggerRawDigiProducer.cxx:91 AliPHOSTriggerRawDigiProducer.cxx:92 AliPHOSTriggerRawDigiProducer.cxx:93 AliPHOSTriggerRawDigiProducer.cxx:94 AliPHOSTriggerRawDigiProducer.cxx:95 AliPHOSTriggerRawDigiProducer.cxx:96 AliPHOSTriggerRawDigiProducer.cxx:97 AliPHOSTriggerRawDigiProducer.cxx:98 AliPHOSTriggerRawDigiProducer.cxx:99 AliPHOSTriggerRawDigiProducer.cxx:100 AliPHOSTriggerRawDigiProducer.cxx:101 AliPHOSTriggerRawDigiProducer.cxx:102 AliPHOSTriggerRawDigiProducer.cxx:103 AliPHOSTriggerRawDigiProducer.cxx:104 AliPHOSTriggerRawDigiProducer.cxx:105 AliPHOSTriggerRawDigiProducer.cxx:106 AliPHOSTriggerRawDigiProducer.cxx:107 AliPHOSTriggerRawDigiProducer.cxx:108 AliPHOSTriggerRawDigiProducer.cxx:109 AliPHOSTriggerRawDigiProducer.cxx:110 AliPHOSTriggerRawDigiProducer.cxx:111 AliPHOSTriggerRawDigiProducer.cxx:112 AliPHOSTriggerRawDigiProducer.cxx:113 AliPHOSTriggerRawDigiProducer.cxx:114 AliPHOSTriggerRawDigiProducer.cxx:115 AliPHOSTriggerRawDigiProducer.cxx:116 AliPHOSTriggerRawDigiProducer.cxx:117 AliPHOSTriggerRawDigiProducer.cxx:118 AliPHOSTriggerRawDigiProducer.cxx:119 AliPHOSTriggerRawDigiProducer.cxx:120 AliPHOSTriggerRawDigiProducer.cxx:121 AliPHOSTriggerRawDigiProducer.cxx:122 AliPHOSTriggerRawDigiProducer.cxx:123 AliPHOSTriggerRawDigiProducer.cxx:124 AliPHOSTriggerRawDigiProducer.cxx:125 AliPHOSTriggerRawDigiProducer.cxx:126 AliPHOSTriggerRawDigiProducer.cxx:127 AliPHOSTriggerRawDigiProducer.cxx:128 AliPHOSTriggerRawDigiProducer.cxx:129 AliPHOSTriggerRawDigiProducer.cxx:130 AliPHOSTriggerRawDigiProducer.cxx:131 AliPHOSTriggerRawDigiProducer.cxx:132 AliPHOSTriggerRawDigiProducer.cxx:133 AliPHOSTriggerRawDigiProducer.cxx:134 AliPHOSTriggerRawDigiProducer.cxx:135 AliPHOSTriggerRawDigiProducer.cxx:136 AliPHOSTriggerRawDigiProducer.cxx:137 AliPHOSTriggerRawDigiProducer.cxx:138 AliPHOSTriggerRawDigiProducer.cxx:139 AliPHOSTriggerRawDigiProducer.cxx:140 AliPHOSTriggerRawDigiProducer.cxx:141 AliPHOSTriggerRawDigiProducer.cxx:142 AliPHOSTriggerRawDigiProducer.cxx:143 AliPHOSTriggerRawDigiProducer.cxx:144 AliPHOSTriggerRawDigiProducer.cxx:145 AliPHOSTriggerRawDigiProducer.cxx:146 AliPHOSTriggerRawDigiProducer.cxx:147 AliPHOSTriggerRawDigiProducer.cxx:148 AliPHOSTriggerRawDigiProducer.cxx:149 AliPHOSTriggerRawDigiProducer.cxx:150 AliPHOSTriggerRawDigiProducer.cxx:151 AliPHOSTriggerRawDigiProducer.cxx:152 AliPHOSTriggerRawDigiProducer.cxx:153 AliPHOSTriggerRawDigiProducer.cxx:154 AliPHOSTriggerRawDigiProducer.cxx:155 AliPHOSTriggerRawDigiProducer.cxx:156 AliPHOSTriggerRawDigiProducer.cxx:157 AliPHOSTriggerRawDigiProducer.cxx:158 AliPHOSTriggerRawDigiProducer.cxx:159 AliPHOSTriggerRawDigiProducer.cxx:160 AliPHOSTriggerRawDigiProducer.cxx:161 AliPHOSTriggerRawDigiProducer.cxx:162 AliPHOSTriggerRawDigiProducer.cxx:163 AliPHOSTriggerRawDigiProducer.cxx:164 AliPHOSTriggerRawDigiProducer.cxx:165 AliPHOSTriggerRawDigiProducer.cxx:166 AliPHOSTriggerRawDigiProducer.cxx:167 AliPHOSTriggerRawDigiProducer.cxx:168 AliPHOSTriggerRawDigiProducer.cxx:169 AliPHOSTriggerRawDigiProducer.cxx:170 AliPHOSTriggerRawDigiProducer.cxx:171 AliPHOSTriggerRawDigiProducer.cxx:172 AliPHOSTriggerRawDigiProducer.cxx:173 AliPHOSTriggerRawDigiProducer.cxx:174 AliPHOSTriggerRawDigiProducer.cxx:175 AliPHOSTriggerRawDigiProducer.cxx:176 AliPHOSTriggerRawDigiProducer.cxx:177 AliPHOSTriggerRawDigiProducer.cxx:178 AliPHOSTriggerRawDigiProducer.cxx:179 AliPHOSTriggerRawDigiProducer.cxx:180 AliPHOSTriggerRawDigiProducer.cxx:181 AliPHOSTriggerRawDigiProducer.cxx:182 AliPHOSTriggerRawDigiProducer.cxx:183 AliPHOSTriggerRawDigiProducer.cxx:184 AliPHOSTriggerRawDigiProducer.cxx:185 AliPHOSTriggerRawDigiProducer.cxx:186 AliPHOSTriggerRawDigiProducer.cxx:187 AliPHOSTriggerRawDigiProducer.cxx:188 AliPHOSTriggerRawDigiProducer.cxx:189 AliPHOSTriggerRawDigiProducer.cxx:190 AliPHOSTriggerRawDigiProducer.cxx:191 AliPHOSTriggerRawDigiProducer.cxx:192 AliPHOSTriggerRawDigiProducer.cxx:193 AliPHOSTriggerRawDigiProducer.cxx:194 AliPHOSTriggerRawDigiProducer.cxx:195 AliPHOSTriggerRawDigiProducer.cxx:196 AliPHOSTriggerRawDigiProducer.cxx:197