]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveDet/AliEveTRDTrackList.cxx
Fix for #76933: Fix access operator
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTRDTrackList.cxx
index 612ee3cf2d5f9b15de82dd3f40ec4c3c54f02da5..5ae6859fd743af5ab482ba4c4a1cb9f3a9931705 100644 (file)
@@ -78,7 +78,7 @@
 #include <EveDet/AliEveTRDTrackListEditor.h>
 
 #include <../PWG1/TRD/AliTRDrecoTask.h>
-#include <../PWG1/TRD/macros/AliTRDperformanceTrain.h>
+#include <../PWG1/TRD/AliTRDpwg1Helper.h>
 
 ClassImp(AliEveTRDTrackList)
 
@@ -173,7 +173,7 @@ Int_t AliEveTRDTrackList::AddMacro(const Char_t* path, const Char_t* nameC, Bool
 
   // Expand the path and create the pathname
   Char_t* systemPath = gSystem->ExpandPathName(path);
-  sprintf(pathname, "%s/%s", systemPath, nameC);
+  snprintf(pathname, fkMaxMacroPathNameLength, "%s/%s", systemPath, nameC);
   delete systemPath;
   systemPath = 0;
 
@@ -264,7 +264,7 @@ void AliEveTRDTrackList::AddStandardContent()
 {
   // Adds standard macros to the macro list.
 
-  // Add your standard macros here, e.g.: 
+  // Add your standard macros here, e.g.:
   // To add a macro use:
   // AddMacro("$(ALICE_ROOT)/myFolder", "myMacroName.C");
   // -> If the file does not exist, nothing happens. So if you want to handle this,
@@ -279,10 +279,19 @@ void AliEveTRDTrackList::AddStandardContent()
     return;
   }
 
-  AliTRDrecoTask *task = 0x0;
-  TList *fPlots = 0x0;
-  for(Int_t it=2; it<NTRDQATASKS; it++){
-    TClass c(fgkTRDtaskClassName[it]);
+  const Char_t *fgkTRDPWG1taskClassName[AliTRDpwg1Helper::kNTRDQATASKS] = {
+    "AliTRDcheckESD"
+    ,"AliTRDinfoGen"
+    ,"AliTRDcheckDET"
+    ,"AliTRDefficiency"
+    ,"AliTRDresolution"
+    ,"AliTRDcheckPID"
+    ,"AliTRDv0Monitor"
+  };
+  AliTRDrecoTask *task(NULL);
+  TList *fPlots(NULL);
+  for(Int_t it=2; it<AliTRDpwg1Helper::kNTRDQATASKS; it++){
+    TClass c(fgkTRDPWG1taskClassName[it]);
     task = (AliTRDrecoTask*)c.New();
     task->SetMCdata(kFALSE);
     if(!(fPlots = task->GetPlotFunctors())){
@@ -297,7 +306,7 @@ void AliEveTRDTrackList::AddStandardContent()
     }
 
     // export task to CINT and add functions
-    gROOT->ProcessLine(Form("%s* %s = (%s*)%p;", fgkTRDtaskClassName[it], task->GetName(), fgkTRDtaskClassName[it], (void*)task));
+    gROOT->ProcessLine(Form("%s* %s = (%s*)%p;", fgkTRDPWG1taskClassName[it], task->GetName(), fgkTRDPWG1taskClassName[it], (void*)task));
     TIter iter(fPlots); TMethodCall *m = 0x0;
     while((m = dynamic_cast<TMethodCall*>(iter()))){
       AddMacroFast("", Form("%s->%s", task->GetName(), m->GetMethodName()), kSingleTrackHisto);
@@ -305,6 +314,7 @@ void AliEveTRDTrackList::AddStandardContent()
   }
 }
 
+
 //______________________________________________________
 Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TList* procIterator)
 {
@@ -324,7 +334,7 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
   // A.B. gROOT->Reset();
   
   // Clear old data and re-allocate
-  if (fDataTree == 0x0){ 
+  if (!fDataTree){
     TDirectory *cwd = gDirectory;
     fDataTree = new TTreeSRedirector(Form("/tmp/TRD.TrackListMacroData_%s.root", gSystem->Getenv("USER")));
     cwd->cd();
@@ -346,15 +356,11 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
 
   TMacroData* macro = 0;
 
-  TString* procCmds = 0;
-  AliEveTRDTrackListMacroType* mProcType = 0;
-  if (procIterator->GetEntries() > 0) {
-    procCmds = new TString[procIterator->GetEntries()];
-    mProcType = new AliEveTRDTrackListMacroType[procIterator->GetEntries()];
-  }
+  TString* procCmds = new TString[procIterator->GetEntries()];
+  AliEveTRDTrackListMacroType* mProcType = new AliEveTRDTrackListMacroType[procIterator->GetEntries()];
 
   TString* selCmds(NULL);
-  AliEveTRDTrackListMacroType* mSelType = 0;
+  AliEveTRDTrackListMacroType* mSelType(NULL);
   if (selIterator->GetEntries() > 0) {
     selCmds = new TString[selIterator->GetEntries()];
     mSelType = new AliEveTRDTrackListMacroType[selIterator->GetEntries()];
@@ -364,7 +370,7 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
 
   AliEveTRDTrackListMacroType macroType = kUnknown;
   Int_t numHistoMacros = 0;
-  TH1** histos = 0;
+  TH1** histos(NULL);
 
   AliEveTRDTrack* track1(NULL);
   AliEveTRDTrack* track2(NULL);
@@ -430,26 +436,27 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
     // Single track select macro
     if (macroType == kSingleTrackSelect) {
       // Has already been processed by ApplySTSelectionMacros(...)
-      mSelType[i] = macroType;         
+      if(mSelType) mSelType[i] = macroType;
     }
     // Correlated tracks select macro
     else if (macroType == kCorrelTrackSelect) {
-      mSelType[i] = macroType;  
+      if(mSelType) mSelType[i] = macroType;  
  
       // Create the command
-      selCmds[i] = macro->GetCmd();
+      if(selCmds) selCmds[i] = macro->GetCmd();
     } else {
       Error("Apply process macros", 
         Form("Macro list corrupted: Macro \"%s/%s.C\" is not registered as a selection macro!", 
         macro->GetPath(), macro->GetName()));
-      mSelType[i] = kUnknown;
+      if(mSelType) mSelType[i] = kUnknown;
     } 
   }  
 
   // Allocate memory for the histograms
-  if (numHistoMacros > 0)  histos = new TH1*[numHistoMacros];
-  for (Int_t i = 0; i < numHistoMacros; i++)  histos[i] = 0x0;
-
+  if (numHistoMacros > 0){
+    histos = new TH1*[numHistoMacros];
+    memset(histos, 0, numHistoMacros*sizeof(TH1*));
+  }
 
   //////////////////////////////////
   // WALK THROUGH THE LIST OF TRACKS
@@ -468,7 +475,7 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
     for (Int_t i = 0, histoIndex = 0; i < procIterator->GetEntries(); i++){
       // Single track histo
       if (mProcType[i] == kSingleTrackHisto){
-        histos[histoIndex++] = (TH1*)gROOT->ProcessLineSync(procCmds[i]);
+        if(histos) histos[histoIndex++] = (TH1*)gROOT->ProcessLineSync(procCmds[i]);
        // Correlated tracks histo
       } else if (mProcType[i] == kCorrelTrackHisto) {
         // Loop over all pairs behind the current one - together with the other loop this will be a loop
@@ -492,7 +499,7 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
           // Select track by default (so it will be processed, if there are no correlated tracks selection macros!)
           selectedByCorrSelMacro = kTRUE;
           for (Int_t j = 0; j < selIterator->GetEntries(); j++){
-            if (mSelType[j] == kCorrelTrackSelect){
+            if (mSelType && mSelType[j] == kCorrelTrackSelect){
               selectedByCorrSelMacro = (Bool_t)gROOT->ProcessLineSync(selCmds[j]);
               if (!selectedByCorrSelMacro)  break;
             }
@@ -501,7 +508,7 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
           // If the pair has not been selected by the correlated tracks selection macros, skip it!
           if (!selectedByCorrSelMacro) continue;
           
-          histos[histoIndex] = (TH1*)gROOT->ProcessLineSync(procCmds[i]);
+          if(histos) histos[histoIndex] = (TH1*)gROOT->ProcessLineSync(procCmds[i]);
         }
         histoIndex++;
       }
@@ -548,7 +555,7 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
           // Select track by default (so it will be processed, if there are no correlated tracks selection macros!)
           selectedByCorrSelMacro = kTRUE;
           for (Int_t j = 0; j < selIterator->GetEntries(); j++) {
-            if (mSelType[j] == kCorrelTrackSelect) {
+            if (mSelType && mSelType[j] == kCorrelTrackSelect) {
               selectedByCorrSelMacro = (Bool_t)gROOT->ProcessLineSync(selCmds[j]);
               if (!selectedByCorrSelMacro)  break;
             }
@@ -589,21 +596,21 @@ Bool_t AliEveTRDTrackList::ApplyProcessMacros(const TList* selIterator, const TL
     }
   }
 
-  if (fDataTree != 0) delete fDataTree;
-  fDataTree = 0;
+  if (fDataTree) delete fDataTree;
+  fDataTree = NULL;
 
-  if (procCmds != 0)  delete [] procCmds;
-  procCmds = 0;
-  if (mProcType != 0)  delete [] mProcType;
-  mProcType = 0;
+  if (procCmds)  delete [] procCmds;
+  procCmds = NULL;
+  if (mProcType)  delete [] mProcType;
+  mProcType = NULL;
 
-  if (selCmds != 0)  delete [] selCmds;
-  selCmds = 0;
-  if (mSelType != 0)  delete mSelType;
-  mSelType = 0;
+  if (selCmds)  delete [] selCmds;
+  selCmds = NULL;
+  if (mSelType)  delete [] mSelType;
+  mSelType = NULL;
 
-  if (histos != 0)  delete [] histos;
-  histos = 0;
+  if (histos)  delete [] histos;
+  histos = NULL;
 
   // Clear root
   // A.B. gROOT->Reset();