]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Memory leaks fixed. Some technical "improvements" added.
authorzampolli <zampolli@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 26 Feb 2010 14:13:20 +0000 (14:13 +0000)
committerzampolli <zampolli@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 26 Feb 2010 14:13:20 +0000 (14:13 +0000)
STEER/AliDCSArray.cxx
STEER/AliGRPPreprocessor.cxx
STEER/AliLHCReader.cxx

index 04e79c11813c51f83fb919d9f521f5b595d76195..225e912e053345efc5b54b51c3b9954c6efa3925 100644 (file)
@@ -273,23 +273,23 @@ AliDCSArray::~AliDCSArray()
        //
 
        if (fBool){
-               delete fBool;
+               delete [] fBool;
                fBool = 0x0;
        }
        if (fChar){
-               delete fChar;
+               delete [] fChar;
                fChar = 0x0;
        }
        if (fUInt){
-               delete fUInt;
+               delete [] fUInt;
                fUInt = 0x0;
        }
        if (fInt){
-               delete fInt;
+               delete [] fInt;
                fInt = 0x0;
        }
        if (fFloat){
-               delete fFloat;
+               delete [] fFloat;
                fFloat = 0x0;
        }
        if (fStringArray!=0x0){
@@ -297,7 +297,7 @@ AliDCSArray::~AliDCSArray()
                fStringArray = 0x0;
        }
        if (fDouble){
-               delete fDouble;
+               delete [] fDouble;
                fDouble = 0x0;
        }
 }
index 802209032c9566d58474eb3f0b1baad1bf42c561..1bce3a70b1b7b4a236b55a9a1a2365b601efc6d0 100644 (file)
@@ -507,6 +507,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap)
        //=================//
 
        UInt_t iLHCData = ProcessLHCData(grpobj);
+
        if( iLHCData == 0 ) {
                Log(Form("LHC Data from DCS FXS, successful!"));
        } else  if (iLHCData == 1) {
@@ -579,11 +580,11 @@ UInt_t AliGRPPreprocessor::ProcessLHCData(AliGRPObject *grpobj)
 
        TString timeStartString = (TString)GetRunParameter("DAQ_time_start");
        TString timeEndString = (TString)GetRunParameter("DAQ_time_end");
-       if (timeStartString.IsNull() || timeStartString.IsNull()){
+       if (timeStartString.IsNull() || timeEndString.IsNull()){
                if (timeStartString.IsNull()){ 
                        AliError("DAQ_time_start not set in logbook! Setting statistical values for current DP to invalid");
                }
-               else if (timeStartString.IsNull()){
+               else if (timeEndString.IsNull()){
                        AliError("DAQ_time_end not set in logbook! Setting statistical values for current DP to invalid");
                }
                return 2;
@@ -595,8 +596,8 @@ UInt_t AliGRPPreprocessor::ProcessLHCData(AliGRPObject *grpobj)
        TString fileName = GetFile(kDCS, "LHCData","");
        if (fileName.Length()>0){
                AliInfo("Got The LHC Data file");
-               AliLHCReader* lhcReader = new AliLHCReader();
-               TMap* lhcMap = (TMap*)lhcReader->ReadLHCDP(fileName.Data());
+               AliLHCReader lhcReader;
+               TMap* lhcMap = (TMap*)lhcReader.ReadLHCDP(fileName.Data());
                if (lhcMap) {
                        Log(Form("LHCData map entries = %d",lhcMap->GetEntries()));
                        
@@ -705,6 +706,7 @@ UInt_t AliGRPPreprocessor::ProcessLHCData(AliGRPObject *grpobj)
                                else return 3;
                        }
                        else return 4;
+                       delete lhcMap; 
                }
                else {
                        AliError("Cannot read correctly LHCData file");
@@ -1015,9 +1017,11 @@ UInt_t AliGRPPreprocessor::ProcessDcsFxs(TString partition, TString detector)
                                metaData.SetComment("CTP scalers");
                                if (!Store("CTP","Scalers", scalers, &metaData, 0, 0)) {
                                        Log("Unable to store the CTP scalers object to OCDB!");
+                                       delete scalers;                                 
                                        return 1;
                                }
                        }
+                       delete scalers;
                }
        }
        
@@ -2597,6 +2601,7 @@ Float_t AliGRPPreprocessor::ProcessEnergy(TObjArray* array, Double_t timeStart,
 
        Int_t nCounts = array->GetEntries();
        Float_t energy = -1;
+       Bool_t inRange = kFALSE;
        AliDebug(2,Form("Energy measurements = %d\n",nCounts));
        if (nCounts ==0){
                AliWarning("No Energy values found! Beam Energy remaining invalid!");
@@ -2607,12 +2612,14 @@ Float_t AliGRPPreprocessor::ProcessEnergy(TObjArray* array, Double_t timeStart,
                        if((dcs->GetTimeStamp() >= timeStart) &&(dcs->GetTimeStamp() <= timeEnd)) {
                                energy = (Float_t)(TMath::Nint(((Double_t)(dcs->GetInt(0)))*120/1000)); // sqrt(s)/2 energy in GeV
                                AliInfo(Form("Energy value found = %d, converting --> sqrt(s)/2 = %f (GeV)", dcs->GetInt(0),energy));
+                               inRange = kTRUE;
                                break;
                        }
-                       else {
-                               AliError("No energy values found between DAQ_time_start and DAQ_time_end - energy will remain invalid!");
-                       }
                }
+               if (inRange == kFALSE){
+                               AliInfo("No Energy value found between DAQ_time_start and DAQ_time_end - energy will remain invalid!");
+               }
+       
        }
 
        return energy;
index 981b3ca70f8d53400635bc4a9f2b378cd6f04317..5d24d8f2a1ac302b10be1dbb033577dd200a4ce0 100644 (file)
@@ -74,11 +74,10 @@ TMap* AliLHCReader::ReadLHCDP(TString filename)
                return NULL;
        }
        TMap* mapLHC = new TMap();
-       //      mapLHC->SetOwner(1);
+       mapLHC->SetOwnerKeyValue();
        TString strLine;
        Int_t lhcEntries;
        Int_t nBlocks = 0;
-       //      TObjArray** array;
        Int_t nline =0;
        while(strLine.ReadLine(*file)){
                nline++;
@@ -102,6 +101,7 @@ TMap* AliLHCReader::ReadLHCDP(TString filename)
                }
                if (ntokens == 1 && !(((TObjString*)tokens->At(0))->String()).CompareTo("END_OF_DATA")){
                        AliDebug(2,"End of file reached");
+                       delete tokens;
                        break;
                }
                if (ntokens < 4){  
@@ -121,6 +121,7 @@ TMap* AliLHCReader::ReadLHCDP(TString filename)
                        // requiring the the type and the number of elements for each measurement
                        AliError(Form("The format does not match the expected one, skipping the current line for DP = %s", lhcDPtype.Data()));
                        delete typeTokens;
+                       delete tokens;
                        continue;
                }
                TString type = ((TObjString*)typeTokens->At(0))->String();
@@ -135,25 +136,16 @@ TMap* AliLHCReader::ReadLHCDP(TString filename)
                if (mapLHC->GetValue(lhcDPname)==0x0){
                        array = new TObjArray();
                        array->SetOwner(1);
+                       mapLHC->Add(new TObjString(lhcDPname->String()),array);                 
                }
                else{
-                       TPair* p = mapLHC->RemoveEntry(lhcDPname);
-                       array = (TObjArray*)p->Value();
+                       array = (TObjArray*)mapLHC->GetValue(lhcDPname);
                        AliDebug(2,Form("entry found! --> %p",array));
                }
                                        
                for (Int_t ientry=0; ientry< nentries; ientry ++){
                        Int_t indextime = nfixed+nValuesPerEntry*ientry+nelements;
                        TString strTimestamp = ((TObjString*)tokens->At(indextime))->String();
-                       //                      TObjArray* timeTokens = strTimestamp.Tokenize(".");
-                       //if (timeTokens->GetEntriesFast() < 2 ){  
-                       //      // requiring both the seconds and the nseconds for the timestamp
-                       //              AliError(Form("The timestamp format does not match the expected one, skipping entry %d for DP = %s", ientry, lhcDPtype.Data()));
-                       //      continue;
-                       //}
-                       //time_t seconds = time_t((((TObjString*)timeTokens->At(0))->String()).Atoi());
-                       //Int_t nseconds = Int_t((((TObjString*)timeTokens->At(1))->String()).Atoi());
-                       //TTimeStamp* timestamp = new TTimeStamp(seconds, (Int_t)(nseconds*1E8));
                        Double_t timestamp = strTimestamp.Atof();
                        AliDebug(2,Form("Timestamp in unix time = %f (s)",timestamp));
                        if (fStartTime!=0 && fEndTime!=0 && (fStartTime > timestamp || fEndTime < timestamp)){
@@ -169,6 +161,7 @@ TMap* AliLHCReader::ReadLHCDP(TString filename)
                                }
                                AliDCSArray* dcs = new AliDCSArray(nelements,value,timestamp);
                                array->Add(dcs);
+                               delete[] value;
                        }
                        else if (type == "b"){
                                Bool_t* value = new Bool_t[nelements];
@@ -178,6 +171,7 @@ TMap* AliLHCReader::ReadLHCDP(TString filename)
                                }
                                AliDCSArray* dcs = new AliDCSArray(nelements,value,timestamp);
                                array->Add(dcs);
+                               delete[] value;
                        }
                        else if (type == "f"){ // the floats should be considered as doubles
                                Double_t* value = new Double_t[nelements];
@@ -188,25 +182,34 @@ TMap* AliLHCReader::ReadLHCDP(TString filename)
                                } 
                                AliDCSArray* dcs = new AliDCSArray(nelements,value,timestamp);
                                array->Add(dcs);
+                               delete[] value;
                        } 
                        else if (type == "s"){
                                TObjArray* value = new TObjArray();
+                               value->SetOwner(1);
                                for (Int_t ielement=0; ielement<nelements; ielement++){
-                                       TObjString* strobj = ((TObjString*)tokens->At(nfixed+ielement+ientry*nValuesPerEntry));
+                                 TObjString* strobj = (new TObjString(((TObjString*)tokens->At(nfixed+ielement+ientry*nValuesPerEntry))->String()));
                                        AliDebug(2,Form("Value at index %d = %s",nfixed+ielement+ientry*nValuesPerEntry,(strobj->String()).Data()));
                                        value->Add(strobj);
                                }
                                AliDCSArray* dcs = new AliDCSArray(nelements,value,timestamp);
                                array->Add(dcs);
+                               delete value;
                        }
                        else{
                                AliError(Form("Non-expected type %s",type.Data()));
+                               delete typeTokens;
+                               delete tokens;  
+                               file->close();
+                               delete file;    
                                return NULL;
                        } 
                }
-               mapLHC->Add(lhcDPname,array);                   
+               delete typeTokens;
+               delete tokens;
        }
-       //mapLHC->Print();
+       file->close();
+       delete file;
        return mapLHC;
 }