]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EMCAL/AliEMCALCalibReference.cxx
Next round of fixes (Jochen)
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALCalibReference.cxx
index b0c3d236bfe76fcdcbc3bfa9a80005102a4d5700..82639979c4f578e7cb7785e3c009edd27f4427cc 100644 (file)
@@ -39,6 +39,7 @@ AliEMCALCalibReference::AliEMCALCalibReference(const int nSM) :
     fSuperModuleData.Add(new AliEMCALSuperModuleCalibReference(i));
   }
   fSuperModuleData.Compress(); // compress the TObjArray
+  fSuperModuleData.SetOwner(kTRUE); 
 }
 
 //____________________________________________________________________________
@@ -62,17 +63,17 @@ void AliEMCALCalibReference::ReadTextCalibReferenceInfo(Int_t nSM, const TString
 
   // list of values to be read
   // first: overall values for the whole SuperModule
-  Int_t iReferenceTime; 
+  Int_t iReferenceTime = 0
   // second: additional info for LED Reference and SM temperature
-  Float_t rLEDRefAmp;
-  Float_t rLEDRefAmpRMS;
-  Int_t iLEDRefHighLow;
-  Float_t temperature;
-  Float_t temperatureRMS;
+  Float_t rLEDRefAmp = 0;
+  Float_t rLEDRefAmpRMS = 0;
+  Int_t iLEDRefHighLow = 0;
+  Float_t temperature = 0;
+  Float_t temperatureRMS = 0;
   // third: info for each tower
-  Int_t iHighLow; // 
-  Float_t rLEDAmp; // low gain eq. amplitude
-  Float_t rLEDAmpRMS; //
+  Int_t iHighLow = 0; // 
+  Float_t rLEDAmp = 0; // low gain eq. amplitude
+  Float_t rLEDAmpRMS = 0; //
   // end - all values
 
   Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
@@ -80,7 +81,7 @@ void AliEMCALCalibReference::ReadTextCalibReferenceInfo(Int_t nSM, const TString
   for (Int_t i = 0; i < fNSuperModule; i++) {
     AliEMCALSuperModuleCalibReference * t = (AliEMCALSuperModuleCalibReference*) fSuperModuleData[i];
     if (!inputFile) {
-      printf("AliEMCALCalibReference::ReadCalibReferenceInfo - Error while reading input file; likely EOF..");
+      printf("AliEMCALCalibReference::ReadCalibReferenceInfo - Error while reading input file; likely EOF..\n");
       return;
     }
     inputFile >> iSM;
@@ -93,12 +94,21 @@ void AliEMCALCalibReference::ReadTextCalibReferenceInfo(Int_t nSM, const TString
     // second: additional info for LED Reference and SM temperature
     for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
       inputFile >> id >> iLEDRefHighLow >> rLEDRefAmp >> rLEDRefAmpRMS;
+      if (id<0 || id>(AliEMCALGeoParams::fgkEMCALLEDRefs-1) ) {
+       printf("AliEMCALCalibReference::ReadCalibReferenceInfo - Error while reading input file; LEDRef j %d id %d\n", j, id);
+       return;
+      }
       t->SetLEDRefHighLow(id, iLEDRefHighLow);
       t->SetLEDRefAmp(id, rLEDRefAmp);
       t->SetLEDRefAmpRMS(id, rLEDRefAmpRMS);
     }
+
     for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
       inputFile >> id >> temperature >> temperatureRMS;
+      if (id<0 || id>(AliEMCALGeoParams::fgkEMCALTempSensors-1) ) {
+       printf("AliEMCALCalibReference::ReadCalibReferenceInfo - Error while reading input file; TempSensor j %d id %d\n", j, id);
+       return;
+      }
       t->SetTemperature(id, temperature);
       t->SetTemperatureRMS(id, temperatureRMS);
     }
@@ -108,6 +118,13 @@ void AliEMCALCalibReference::ReadTextCalibReferenceInfo(Int_t nSM, const TString
       inputFile >> iCol >> iRow 
                >> iHighLow >> rLEDAmp >> rLEDAmpRMS;
 
+      // check that input values are not out bounds
+      if (iCol<0 || iCol>(AliEMCALGeoParams::fgkEMCALCols-1) ||
+         iRow<0 || iRow>(AliEMCALGeoParams::fgkEMCALRows-1) ) {
+       printf("AliEMCALCalibReference::ReadCalibReferenceInfo - 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) {
        // C side, oriented differently than A side: swap is requested
@@ -216,7 +233,7 @@ void AliEMCALCalibReference::ReadTreeCalibReferenceInfo(TTree *tree,
   Int_t iSM = 0; // SuperModule index
   // list of values to be read
   // first: overall values for the whole SuperModule
-  Int_t iReferenceTime= {0}
+  Int_t iReferenceTime= 0
   // second: additional info for LED Reference and SM temperature
   Float_t rLEDRefAmp[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
   Float_t rLEDRefAmpRMS[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};