fPrevRow(-1),
fColumn(-1),
fPrevColumn(-1),
- fGain(0),
+ fCaloFlag(0),
+ fFilter(0),
fNRCU(0),
+ fNSides(0),
+ fCalo(calo),
fExternalMapping(kFALSE)
{
-// create an object to read PHOS/EMCAL raw digits
-
+ // create an object to read PHOS/EMCAL raw digits
SelectRawData(calo);
// PHOS and EMCAL have differen number of RCU per module
+ //For PHOS
fNRCU = 4;
- if(calo == "EMCAL") fNRCU = 2;
+ fNSides = 1;
+ //For EMCAL
+ TString sides[]={"A","C"};
+ if(fCalo == "EMCAL") {
+ fNRCU = 2;
+ fNSides = 2;
+ }
if (mapping == NULL) {
TString path = gSystem->Getenv("ALICE_ROOT");
- path += "/"+calo+"/mapping/RCU";
+ path += "/"+fCalo+"/mapping/RCU";
TString path2;
- for(Int_t i = 0; i < fNRCU; i++) {
- path2 = path;
- path2 += i;
- path2 += ".data";
- fMapping[i] = new AliCaloAltroMapping(path2.Data());
+ for(Int_t j = 0; j < fNSides; j++){
+ for(Int_t i = 0; i < fNRCU; i++) {
+ path2 = path;
+ path2 += i;
+ if(fCalo == "EMCAL") path2 += sides[j];
+ path2 += ".data";
+ //printf("AliCaloRawStream::RCU: %s\n",path2.Data());
+ fMapping[j*fNRCU+ i] = new AliCaloAltroMapping(path2.Data());
+ }
}
}
else {
fExternalMapping = kTRUE;
- for(Int_t i = 0; i < fNRCU; i++)
+ //printf("AliCaloRawStream::External mapping N: RCU %d, sides %d \n", fNRCU,fNSides);
+ for(Int_t i = 0; i < fNRCU*fNSides; i++)
fMapping[i] = mapping[i];
+
}
-
- SetNoAltroMapping(kFALSE);
}
//_____________________________________________________________________________
fPrevRow(-1),
fColumn(-1),
fPrevColumn(-1),
- fGain(0),
+ fCaloFlag(0),
+ fFilter(0),
fNRCU(0),
+ fNSides(0),
+ fCalo(""),
fExternalMapping(kFALSE)
{
Fatal("AliCaloRawStream", "copy constructor not implemented");
// destructor
if (!fExternalMapping)
- for(Int_t i = 0; i < fNRCU; i++)
+ for(Int_t i = 0; i < fNRCU*fNSides; i++)
delete fMapping[i];
}
// reset phos/emcal raw stream params
AliAltroRawStream::Reset();
fModule = fPrevModule = fRow = fPrevRow = fColumn = fPrevColumn = -1;
- fGain = 0;
+ fFilter = fCaloFlag = 0;
+ fCalo="";
}
//_____________________________________________________________________________
fPrevRow = fRow;
fPrevColumn = fColumn;
if (AliAltroRawStream::Next()) {
- if (IsNewHWAddress())
+ if (IsNewHWAddress()) {
ApplyAltroMapping();
+ if ( fFilter > 0 ) { // some data should be filtered out
+ if ( (fFilter & (1<<fCaloFlag)) != 0) {
+ // this particular data should be filtered out
+ Next(); // go to the next address instead
+ }
+ }
+ }
return kTRUE;
}
else
Int_t rcuIndex = ddlNumber % fNRCU;
+ if(fCalo=="EMCAL"){ // EMCAL may need to increase RCU index for the maps
+ if (fModule%2 == 1) { rcuIndex += 2; } // other='C' side maps
+ }
+
Short_t hwAddress = GetHWAddress();
fRow = fMapping[rcuIndex]->GetPadRow(hwAddress);
fColumn = fMapping[rcuIndex]->GetPad(hwAddress);
- fGain = fMapping[rcuIndex]->GetSector(hwAddress);
+ fCaloFlag = fMapping[rcuIndex]->GetSector(hwAddress);
}