ClassImp(AliEMCALCalibAbs)
//____________________________________________________________________________
-AliEMCALCalibAbs::AliEMCALCalibAbs() :
- fNSuperModule(0),
- fSuperModuleData(0)
+AliEMCALCalibAbs::AliEMCALCalibAbs(const int nSM) :
+ fNSuperModule(nSM),
+ fSuperModuleData()
{
//Default constructor.
+ for (int i=0; i<fNSuperModule; i++) {
+ fSuperModuleData.Add(new AliEMCALSuperModuleCalibAbs(i));
+ }
+ fSuperModuleData.Compress(); // compress the TObjArray
+ fSuperModuleData.SetOwner(kTRUE);
}
//____________________________________________________________________________
}
fNSuperModule = nSM;
- if (fSuperModuleData) delete [] fSuperModuleData;
- fSuperModuleData = new AliEMCALSuperModuleCalibAbs[fNSuperModule];
Int_t iSM = 0; // SuperModule index
Int_t iCol = 0;
Int_t iRow = 0;
- Int_t id = 0;
// list of values to be read
// first: overall values for the whole SuperModule
- Int_t CalibMethod;
- Int_t CalibPass;
- Int_t CalibTime;
- Float_t AbsoluteGain;
- // second: additional info for LED Reference and SM temperature
- Float_t LEDRefAmp;
- Float_t LEDRefAmpRMS;
- Float_t LEDRefHighLowRatio;
- Int_t LEDRefHighLow;
- Float_t Temperature;
- Float_t TemperatureRMS;
+ Int_t iCalibMethod = 0;
+ Int_t iCalibPass = 0;
+ Float_t absoluteCalib = 0;
// third: info for each tower
- Float_t RelativeGain; // (ADC>GeV relative gain/conversion), value around 1
- Float_t HighLowRatio; // value around 16 or so
- Int_t HighLow; //
- Float_t LEDAmp; // low gain eq. amplitude
- Float_t LEDAmpRMS; //
+ Float_t relativeCalib = 0; // (ADC>GeV relative gain/conversion), value around 1
// end - all values
Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
for (Int_t i = 0; i < fNSuperModule; i++) {
- AliEMCALSuperModuleCalibAbs &t = fSuperModuleData[i];
+ AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[i];
if (!inputFile) {
- printf("AliEMCALCalibAbs::ReadCalibAbsInfo - Error while reading input file; likely EOF..");
+ printf("AliEMCALCalibAbs::ReadCalibAbsInfo - Error while reading input file; likely EOF..\n");
return;
}
inputFile >> iSM;
- t.fSuperModuleNum = iSM;
+ t->SetSuperModuleNum(iSM);
// first: overall values for the whole SuperModule
- inputFile >> CalibMethod >> CalibPass >> CalibTime >> AbsoluteGain;
- t.fCalibMethod = CalibMethod;
- t.fCalibPass = CalibPass;
- t.fCalibTime = CalibTime;
- t.fAbsoluteGain = AbsoluteGain;
-
- // second: additional info for LED Reference and SM temperature
- for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
- inputFile >> id >> LEDRefAmp >> LEDRefAmpRMS >> LEDRefHighLowRatio >> LEDRefHighLow;
- t.fLEDRefAmp[id] = LEDRefAmp;
- t.fLEDRefAmpRMS[id] = LEDRefAmpRMS;
- t.fLEDRefHighLowRatio[id] = LEDRefHighLowRatio;
- t.fLEDRefHighLow[id] = LEDRefHighLow;
- }
- for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
- inputFile >> id >> Temperature >> TemperatureRMS;
- t.fTemperature[id] = Temperature;
- t.fTemperatureRMS[id] = TemperatureRMS;
- }
+ inputFile >> iCalibMethod >> iCalibPass >> absoluteCalib;
+ t->SetCalibMethod(iCalibMethod);
+ t->SetCalibPass(iCalibPass);
+ t->SetAbsoluteCalib(absoluteCalib);
// third: info for each tower
for (Int_t j=0; j<nAPDPerSM; j++) {
- inputFile >> iCol >> iRow
- >> RelativeGain >> HighLowRatio >> HighLow >> LEDAmp >> LEDAmpRMS;
+ inputFile >> iCol >> iRow >> relativeCalib;
+
+ // check that input values are not out bounds
+ if (iCol<0 || iCol>(AliEMCALGeoParams::fgkEMCALCols-1) ||
+ iRow<0 || iRow>(AliEMCALGeoParams::fgkEMCALRows-1) ) {
+ printf("AliEMCALCalibAbs::ReadCalibAbsInfo - Error while reading input file; j %d iCol %d iRow %d\n", j, iCol, iRow);
+ return;
+ }
// assume that this info is already swapped and done for this basis?
if (swapSides) {
iRow = AliEMCALGeoParams::fgkEMCALRows-1 - iRow;
}
- AliEMCALCalibAbsVal &v = t.fAPDVal[iCol][iRow];
-
- v.fRelativeGain = RelativeGain;
- v.fHighLowRatio = HighLowRatio;
- v.fHighLow = HighLow;
- v.fLEDAmp = LEDAmp;
- v.fLEDAmpRMS = LEDAmpRMS;
+ t->SetRelativeCalib(iCol, iRow, relativeCalib);
}
} // i, SuperModule
Int_t iRow = 0;
Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
-
+ Float_t relativeCalib = 0;
for (Int_t i = 0; i < fNSuperModule; i++) {
- AliEMCALSuperModuleCalibAbs &t = fSuperModuleData[i];
+ AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[i];
+
// first: overall values for the whole SuperModule
- outputFile << t.fSuperModuleNum << endl;
- outputFile << t.fCalibMethod << " "
- << t.fCalibPass << " "
- << t.fCalibTime << " "
- << t.fAbsoluteGain << endl;
-
- // second: additional info for LED Reference and SM temperature
- for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
- outputFile << j << " " << t.fLEDRefAmp[j] << " " << t.fLEDRefAmpRMS[j]
- << " " << t.fLEDRefHighLowRatio[j] << " " << t.fLEDRefHighLow[j]
- << endl;
- }
- for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
- outputFile << j << " " << t.fTemperature[j] << " " << t.fTemperatureRMS[j] << endl;
- }
+ outputFile << t->GetSuperModuleNum() << endl;
+ outputFile << t->GetCalibMethod() << " "
+ << t->GetCalibPass() << " "
+ << t->GetAbsoluteCalib() << endl;
// third: info for each tower
for (Int_t j=0; j<nAPDPerSM; j++) {
iCol = j / AliEMCALGeoParams::fgkEMCALRows;
iRow = j % AliEMCALGeoParams::fgkEMCALRows;
- AliEMCALCalibAbsVal &v = t.fAPDVal[iCol][iRow];
+ relativeCalib = t->GetRelativeCalib(iCol, iRow);
if (swapSides) {
// C side, oriented differently than A side: swap is requested
}
outputFile << iCol << " " << iRow
- << " " << v.fRelativeGain
- << " " << v.fHighLowRatio
- << " " << v.fHighLow
- << " " << v.fLEDAmp
- << " " << v.fLEDAmpRMS << endl;
+ << " " << relativeCalib << endl;
}
} // i, SuperModule
void AliEMCALCalibAbs::ReadTreeCalibAbsInfo(TTree *tree,
Bool_t swapSides)
{
- // how many SuperModule's worth of entries / APDs do we have?
+ // how many SuperModule's worth of info do we have?
Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
- fNSuperModule = tree->GetEntries() / nAPDPerSM;
-
- if (fSuperModuleData) delete [] fSuperModuleData;
- fSuperModuleData = new AliEMCALSuperModuleCalibAbs[fNSuperModule];
+ fNSuperModule = tree->GetEntries();
Int_t iSM = 0; // SuperModule index
// list of values to be read
// first: overall values for the whole SuperModule
- Int_t CalibMethod;
- Int_t CalibPass= {0};
- Int_t CalibTime= {0};
- Float_t AbsoluteGain= {0};
- // second: additional info for LED Reference and SM temperature
- Float_t LEDRefAmp[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
- Float_t LEDRefAmpRMS[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
- Float_t LEDRefHighLowRatio[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
- Int_t LEDRefHighLow[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
- Float_t Temperature[AliEMCALGeoParams::fgkEMCALTempSensors]= {0};
- Float_t TemperatureRMS[AliEMCALGeoParams::fgkEMCALTempSensors]= {0};
+ Int_t iCalibMethod = 0;
+ Int_t iCalibPass = 0;
+ Float_t absoluteCalib = 0;
// third: info for each tower
- Float_t RelativeGain[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
- Float_t HighLowRatio[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
- Int_t HighLow[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
- Float_t LEDAmp[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
- Float_t LEDAmpRMS[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
+ Float_t relativeCalib[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows];
// end - all values
// just to make the initializations of the arrays are done correctly, let's use memset
- memset(LEDRefAmp, 0, sizeof(LEDRefAmp));
- memset(LEDRefAmpRMS, 0, sizeof(LEDRefAmpRMS));
- memset(LEDRefHighLowRatio, 0, sizeof(LEDRefHighLowRatio));
- memset(LEDRefHighLow, 0, sizeof(LEDRefHighLow));
- memset(Temperature, 0, sizeof(Temperature));
- memset(TemperatureRMS, 0, sizeof(TemperatureRMS));
- memset(RelativeGain, 0, sizeof(RelativeGain));
- memset(HighLowRatio, 0, sizeof(HighLowRatio));
- memset(HighLow, 0, sizeof(HighLow));
- memset(LEDAmp, 0, sizeof(LEDAmp));
- memset(LEDAmpRMS, 0, sizeof(LEDAmpRMS));
+ memset(relativeCalib, 0, sizeof(relativeCalib));
// declare the branches
tree->SetBranchAddress("iSM", &iSM);
- tree->SetBranchAddress("CalibMethod", &CalibMethod);
- tree->SetBranchAddress("CalibPass", &CalibPass);
- tree->SetBranchAddress("CalibTime", &CalibTime);
- tree->SetBranchAddress("AbsoluteGain", &AbsoluteGain);
- //
- tree->SetBranchAddress("LEDRefAmp", LEDRefAmp);
- tree->SetBranchAddress("LEDRefAmpRMS", LEDRefAmpRMS);
- tree->SetBranchAddress("LEDRefHighLowRatio", LEDRefHighLowRatio);
- tree->SetBranchAddress("LEDRefHighLow", LEDRefHighLow);
- tree->SetBranchAddress("Temperature", Temperature);
- tree->SetBranchAddress("TemperatureRMS", TemperatureRMS);
+ tree->SetBranchAddress("CalibMethod", &iCalibMethod);
+ tree->SetBranchAddress("CalibPass", &iCalibPass);
+ tree->SetBranchAddress("AbsoluteCalib", &absoluteCalib);
//
- tree->SetBranchAddress("RelativeGain", RelativeGain);
- tree->SetBranchAddress("HighLowRatio", HighLowRatio);
- tree->SetBranchAddress("HighLow", HighLow);
- tree->SetBranchAddress("LEDAmp", LEDAmp);
- tree->SetBranchAddress("LEDAmpRMS", LEDAmpRMS);
+ tree->SetBranchAddress("RelativeCalib", relativeCalib);
// indices for looping over the towers
Int_t iCol = 0;
tree->GetEntry(ient);
// assume the index SuperModules come in order: i=iSM
- AliEMCALSuperModuleCalibAbs &t = fSuperModuleData[iSM];
- t.fSuperModuleNum = iSM;
+ AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[iSM];
+
+ t->SetSuperModuleNum(iSM);
// first, overall values
- t.fCalibMethod = CalibMethod;
- t.fCalibPass = CalibPass;
- t.fCalibTime = CalibTime;
- t.fAbsoluteGain = AbsoluteGain;
-
- // second: additional info for LED references and SM temperatures
- for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
- t.fLEDRefAmp[j] = LEDRefAmp[j];
- t.fLEDRefAmpRMS[j] = LEDRefAmpRMS[j];
- t.fLEDRefHighLowRatio[j] = LEDRefHighLowRatio[j];
- t.fLEDRefHighLow[j] = LEDRefHighLow[j];
- }
- for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
- t.fTemperature[j] = Temperature[j];
- t.fTemperatureRMS[j] = TemperatureRMS[j];
- }
+ t->SetCalibMethod(iCalibMethod);
+ t->SetCalibPass(iCalibPass);
+ t->SetAbsoluteCalib(absoluteCalib);
// third: info for each tower
for (Int_t j=0; j<nAPDPerSM; j++) {
iRowMod = AliEMCALGeoParams::fgkEMCALRows-1 - iRow;
}
- AliEMCALCalibAbsVal &v = t.fAPDVal[iColMod][iRowMod];
-
- v.fRelativeGain = RelativeGain[iCol][iRow];
- v.fHighLowRatio = HighLowRatio[iCol][iRow];
- v.fHighLow = HighLow[iCol][iRow];
- v.fLEDAmp = LEDAmp[iCol][iRow];
- v.fLEDAmpRMS = LEDAmpRMS[iCol][iRow];
+ t->SetRelativeCalib(iColMod, iRowMod, relativeCalib[iCol][iRow]);
}
} // loop over entries
Int_t iSM = 0; // SuperModule index
// list of values to be written
// first: overall values for the whole SuperModule
- Int_t CalibMethod = 0;
- Int_t CalibPass = 0;
- Int_t CalibTime = 0;
- Float_t AbsoluteGain = 0;
- // second: additional info for LED Reference and SM temperature
- Float_t LEDRefAmp[AliEMCALGeoParams::fgkEMCALLEDRefs] = {0};
- Float_t LEDRefAmpRMS[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
- Float_t LEDRefHighLowRatio[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
- Int_t LEDRefHighLow[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
- Float_t Temperature[AliEMCALGeoParams::fgkEMCALTempSensors]= {0};
- Float_t TemperatureRMS[AliEMCALGeoParams::fgkEMCALTempSensors]= {0};
+ Int_t iCalibMethod = 0;
+ Int_t iCalibPass = 0;
+ Float_t absoluteCalib = 0;
// third: info for each tower
- Float_t RelativeGain[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
- Float_t HighLowRatio[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
- Int_t HighLow[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
- Float_t LEDAmp[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
- Float_t LEDAmpRMS[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]= {0};
+ Float_t relativeCalib[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows];
// end - all values
// just to make the initializations of the arrays are done correctly, let's use memset
- memset(LEDRefAmp, 0, sizeof(LEDRefAmp));
- memset(LEDRefAmpRMS, 0, sizeof(LEDRefAmpRMS));
- memset(LEDRefHighLowRatio, 0, sizeof(LEDRefHighLowRatio));
- memset(LEDRefHighLow, 0, sizeof(LEDRefHighLow));
- memset(Temperature, 0, sizeof(Temperature));
- memset(TemperatureRMS, 0, sizeof(TemperatureRMS));
- memset(RelativeGain, 0, sizeof(RelativeGain));
- memset(HighLowRatio, 0, sizeof(HighLowRatio));
- memset(HighLow, 0, sizeof(HighLow));
- memset(LEDAmp, 0, sizeof(LEDAmp));
- memset(LEDAmpRMS, 0, sizeof(LEDAmpRMS));
+ memset(relativeCalib, 0, sizeof(relativeCalib));
Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
// for looping over towers
// declare the branches
// first
tree->Branch("iSM", &iSM, "iSM/I");
- tree->Branch("CalibMethod", &CalibMethod, "CalibMethod/I");
- tree->Branch("CalibPass", &CalibPass, "CalibPass/I");
- tree->Branch("CalibTime", &CalibTime, "CalibTime/I");
- tree->Branch("AbsoluteGain", &AbsoluteGain, "AbsoluteGain/F");
- // second
- tree->Branch( "LEDRefAmp", &LEDRefAmp, Form("LEDRefAmp[%d]/F", AliEMCALGeoParams::fgkEMCALLEDRefs) );
- tree->Branch( "LEDRefAmpRMS", &LEDRefAmpRMS, Form("LEDRefAmpRMS[%d]/F", AliEMCALGeoParams::fgkEMCALLEDRefs) );
- tree->Branch( "LEDRefHighLowRatio", &LEDRefHighLowRatio, Form("LEDRefHighLowRatio[%d]/F", AliEMCALGeoParams::fgkEMCALLEDRefs) );
- tree->Branch( "LEDRefHighLow", &LEDRefHighLow, Form("LEDRefHighLow[%d]/I", AliEMCALGeoParams::fgkEMCALLEDRefs) );
- tree->Branch( "Temperature", &Temperature, Form("Temperature[%d]/F", AliEMCALGeoParams::fgkEMCALTempSensors) );
- tree->Branch( "TemperatureRMS", &TemperatureRMS, Form("TemperatureRMS[%d]/F", AliEMCALGeoParams::fgkEMCALTempSensors) );
+ tree->Branch("CalibMethod", &iCalibMethod, "CalibMethod/I");
+ tree->Branch("CalibPass", &iCalibPass, "CalibPass/I");
+ tree->Branch("AbsoluteCalib", &absoluteCalib, "AbsoluteCalib/F");
// third: info for each tower; see if a 2D array works OK or if we'll have to use 1D arrays instead
- tree->Branch( "RelativeGain", &RelativeGain, Form("RelativeGain[%d][%d]/F", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );
- tree->Branch( "HighLowRatio", &HighLowRatio, Form("HighLowRatio[%d][%d]/F", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );
- tree->Branch( "HighLow", &HighLow, Form("HighLow[%d][%d]/I", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );
- tree->Branch( "LEDAmp", &LEDAmp, Form("LEDAmp[%d][%d]/F", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );
- tree->Branch( "LEDAmpRMS", &LEDAmpRMS, Form("LEDAmpRMS[%d][%d]/F", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );
+ tree->Branch( "RelativeCalib", &relativeCalib, Form("RelativeCalib[%d][%d]/F", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );
for (iSM = 0; iSM < fNSuperModule; iSM++) {
- AliEMCALSuperModuleCalibAbs &t = fSuperModuleData[iSM];
+ AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[iSM];
- iSM = t.fSuperModuleNum;
+ iSM = t->GetSuperModuleNum();
// first, overall values
- CalibMethod = t.fCalibMethod;
- CalibPass = t.fCalibPass;
- CalibTime = t.fCalibTime;
- AbsoluteGain = t.fAbsoluteGain;
-
- // second: additional info for LED references and SM temperatures
- for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
- LEDRefAmp[j] = t.fLEDRefAmp[j];
- LEDRefAmpRMS[j] = t.fLEDRefAmpRMS[j];
- LEDRefHighLowRatio[j] = t.fLEDRefHighLowRatio[j];
- LEDRefHighLow[j] = t.fLEDRefHighLow[j];
- }
- for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
- Temperature[j] = t.fTemperature[j];
- TemperatureRMS[j] = t.fTemperatureRMS[j];
- }
+ iCalibMethod = t->GetCalibMethod();
+ iCalibPass = t->GetCalibPass();
+ absoluteCalib = t->GetAbsoluteCalib();
// third: info for each tower
for (Int_t j=0; j<nAPDPerSM; j++) {
iRowMod = AliEMCALGeoParams::fgkEMCALRows-1 - iRow;
}
- AliEMCALCalibAbsVal &v = t.fAPDVal[iColMod][iRowMod];
-
- RelativeGain[iCol][iRow] = v.fRelativeGain;
- HighLowRatio[iCol][iRow] = v.fHighLowRatio;
- HighLow[iCol][iRow] = v.fHighLow;
- LEDAmp[iCol][iRow] = v.fLEDAmp;
- LEDAmpRMS[iCol][iRow] = v.fLEDAmpRMS;
+ relativeCalib[iColMod][iRowMod] = t->GetRelativeCalib(iCol, iRow);
}
tree->Fill();
//____________________________________________________________________________
AliEMCALCalibAbs::~AliEMCALCalibAbs()
{
- delete [] fSuperModuleData;
+ fSuperModuleData.Delete();
}
//____________________________________________________________________________
-AliEMCALSuperModuleCalibAbs AliEMCALCalibAbs::GetSuperModuleCalibAbsId(Int_t supModIndex)const
-{
- AliEMCALSuperModuleCalibAbs t; // just to maybe prevent a crash, but we are returning something not-initialized so maybe not better really..
- if (!fSuperModuleData)
- return t;
-
- return fSuperModuleData[supModIndex];
-}
-
-//____________________________________________________________________________
-AliEMCALSuperModuleCalibAbs AliEMCALCalibAbs::GetSuperModuleCalibAbsNum(Int_t supModIndex)const
-{
- AliEMCALSuperModuleCalibAbs t; // just to maybe prevent a crash, but we are returning something not-initialized so maybe not better really..
- if (!fSuperModuleData)
- return t;
-
+AliEMCALSuperModuleCalibAbs * AliEMCALCalibAbs::GetSuperModuleCalibAbsNum(Int_t supModIndex)const
+{ // getter via index
for (int i=0; i<fNSuperModule; i++) {
- if (fSuperModuleData[i].fSuperModuleNum == supModIndex) {
- return fSuperModuleData[i];
+ AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[i];
+ if (t->GetSuperModuleNum() == supModIndex) {
+ return t;
}
}
- return t;
+ // if we arrived here, then nothing was found.. just return a NULL pointer
+ return NULL;
}