X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=RAW%2FAliCaloRawStream.cxx;h=a150aa4c22230a4134d4fec32d420b814ae4a4ec;hb=8349c1023764441b03c9f4d601f7a88db77590c2;hp=af9508f4db2c98286207f8f350d873c06a9a9c12;hpb=d84933b0827368130c5d77af3e9687e65f8d24fd;p=u%2Fmrichter%2FAliRoot.git diff --git a/RAW/AliCaloRawStream.cxx b/RAW/AliCaloRawStream.cxx index af9508f4db2..a150aa4c222 100644 --- a/RAW/AliCaloRawStream.cxx +++ b/RAW/AliCaloRawStream.cxx @@ -43,7 +43,7 @@ ClassImp(AliCaloRawStream) //_____________________________________________________________________________ - AliCaloRawStream::AliCaloRawStream(AliRawReader* rawReader, TString calo) : +AliCaloRawStream::AliCaloRawStream(AliRawReader* rawReader, TString calo, AliAltroMapping **mapping) : AliAltroRawStream(rawReader), fModule(-1), fPrevModule(-1), @@ -51,27 +51,49 @@ ClassImp(AliCaloRawStream) 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; - - TString path = gSystem->Getenv("ALICE_ROOT/"); - path += calo+"/mapping/RCU"; - TString path2; - for(Int_t i = 0; i < fNRCU; i++) { - path2 = path; - path2 += i; - path2 += ".data"; - fMapping[i] = new AliCaloAltroMapping(path2.Data()); + fNSides = 1; + //For EMCAL + TString sides[]={"A","C"}; + if(fCalo == "EMCAL") { + fNRCU = 2; + fNSides = 2; } - SetNoAltroMapping(kFALSE); + if (mapping == NULL) { + TString path = gSystem->Getenv("ALICE_ROOT"); + path += "/"+fCalo+"/mapping/RCU"; + TString path2; + 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; + //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]; + + } } //_____________________________________________________________________________ @@ -83,8 +105,12 @@ AliCaloRawStream::AliCaloRawStream(const AliCaloRawStream& stream) : fPrevRow(-1), fColumn(-1), fPrevColumn(-1), - fGain(0), - fNRCU(0) + fCaloFlag(0), + fFilter(0), + fNRCU(0), + fNSides(0), + fCalo(""), + fExternalMapping(kFALSE) { Fatal("AliCaloRawStream", "copy constructor not implemented"); } @@ -102,7 +128,9 @@ AliCaloRawStream::~AliCaloRawStream() { // destructor - for(Int_t i = 0; i < fNRCU; i++) delete fMapping[i]; + if (!fExternalMapping) + for(Int_t i = 0; i < fNRCU*fNSides; i++) + delete fMapping[i]; } //_____________________________________________________________________________ @@ -111,7 +139,8 @@ void AliCaloRawStream::Reset() // reset phos/emcal raw stream params AliAltroRawStream::Reset(); fModule = fPrevModule = fRow = fPrevRow = fColumn = fPrevColumn = -1; - fGain = 0; + fFilter = fCaloFlag = 0; + fCalo=""; } //_____________________________________________________________________________ @@ -124,8 +153,15 @@ Bool_t AliCaloRawStream::Next() fPrevRow = fRow; fPrevColumn = fColumn; if (AliAltroRawStream::Next()) { - if (IsNewHWAddress()) + if (IsNewHWAddress()) { ApplyAltroMapping(); + if ( fFilter > 0 ) { // some data should be filtered out + if ( (fFilter & (1<GetPadRow(hwAddress); fColumn = fMapping[rcuIndex]->GetPad(hwAddress); - fGain = fMapping[rcuIndex]->GetSector(hwAddress); + fCaloFlag = fMapping[rcuIndex]->GetSector(hwAddress); }