]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
temporary data file made safe
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 19 Sep 2008 09:14:00 +0000 (09:14 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 19 Sep 2008 09:14:00 +0000 (09:14 +0000)
EVE/EveDet/AliEveTRDTrackList.cxx
EVE/EveDet/AliEveTRDTrackList.h
EVE/EveDet/AliEveTRDTrackListEditor.cxx

index 39535829541fc99e74602425ac47858b9de5c577..7abb31995937b495d8d2b697f41096b6753f5ad3 100644 (file)
@@ -69,6 +69,7 @@ AliEveTRDTrackList::~AliEveTRDTrackList()
     delete fDataTree;
     fDataTree = 0;
   } 
+  if(!gSystem->AccessPathName(Form("/tmp/TRD.TrackListMacroData_%s.root", gSystem->Getenv("USER")))) gSystem->Exec(Form("rm /tmp/TRD.TrackListMacroData_%s.root", gSystem->Getenv("USER")));
 }
 
 //______________________________________________________
@@ -277,9 +278,27 @@ void AliEveTRDTrackList::AddStandardMacros()
 }
 
 //______________________________________________________
-void AliEveTRDTrackList::ApplyProcessMacros(TList* iterator)
+Bool_t AliEveTRDTrackList::ApplyProcessMacros(TList* iterator)
 {
-  if (iterator->GetEntries() <= 0)  return;
+  // No process macros need to be processed
+  if (iterator->GetEntries() <= 0)  return kTRUE;
+
+  // Clear root
+  gROOT->Reset();
+  
+  // Clear old data and re-allocate
+  if (fDataTree == 0) fDataTree = new TTreeSRedirector(Form("/tmp/TRD.TrackListMacroData_%s.root", gSystem->Getenv("USER")));
+  if (!fDataTree)
+  {
+    Error("Apply process macros", "File \"TRD.TrackListMacroData.root\" could not be accessed properly!");
+    return kFALSE;
+  }
+  
+  if (fDataFromMacroList != 0) delete fDataFromMacroList;
+  fDataFromMacroList = new TList();
+
+  fHistoDataSelected = 0;
+
 
   Char_t name[fkMaxMacroNameLength];
   Char_t** cmds = new Char_t*[iterator->GetEntries()];
@@ -292,17 +311,6 @@ void AliEveTRDTrackList::ApplyProcessMacros(TList* iterator)
   AliTRDtrackV1 *trackv1 = 0;
   TH1* returnedHist = 0x0;
 
-  // Clear root
-  gROOT->Reset();
-  
-  // Clear old data and re-allocate
-  if (fDataFromMacroList != 0) delete fDataFromMacroList;
-  fDataFromMacroList = new TList();
-
-  fHistoDataSelected = 0;
-
-  if (fDataTree == 0) fDataTree = new TTreeSRedirector("TRD.TrackListMacroData.root");
-
   // Collect the commands for each macro and add them to "data-from-list"
   for (Int_t i = 0; i < iterator->GetEntries(); i++)
   {
@@ -443,6 +451,7 @@ void AliEveTRDTrackList::ApplyProcessMacros(TList* iterator)
 
   // Now the data is stored in "TRD.TrackListMacroData.root"
   // The editor will access this file to display the data
+  return kTRUE;
 }
 
 //______________________________________________________
index e6a72c922ea39044c66685c222ad10e70b6a783a..df5222933691ba89600102aeed9ae9d4ffc79d24 100644 (file)
@@ -55,8 +55,11 @@ public:
                                                                 // No checks are performed (fast) and no libraries are
                                                                 // loaded. Do use only, if library already exists!
   virtual void AddStandardMacros();                             // Adds standard macros to the lists
-  void ApplyProcessMacros(TList* iterator);                     // Uses the iterator (for the selected process 
-                                                                // macros) to apply the selected macros to the data
+  Bool_t ApplyProcessMacros(TList* iterator);                   // Uses the iterator (for the selected process 
+                                                                // macros) to apply the selected macros to the data.
+                                                                // Return kTRUE on success, otherwise kFALSE. If there
+                                                                // no process macros selected, kTRUE is returned (no 
+                                                                // error!).
   void ApplySelectionMacros(TList* iterator);                   // Uses the iterator (for the selected selection
                                                                 // macros) to apply the selected macros to the data
   Char_t* MakeMacroEntry(const Char_t* path, const Char_t* name);  // Constructs an entry for the macro
index 0c5f1527289d20abd7df4fe5980001d43eeaef91..664fde5cc8643c94d85bb42be8949bb9fe39bc2e 100644 (file)
@@ -205,6 +205,8 @@ void AliEveTRDTrackListEditor::AddMacro(const Char_t* path, const Char_t* name)
 //______________________________________________________
 void AliEveTRDTrackListEditor::ApplyMacros()
 {
+  Bool_t success = kFALSE;
+
   // First apply the selection macros
   TList* iterator = new TList();
   ftlMacroSelList->GetSelectedEntries(iterator);
@@ -218,7 +220,7 @@ void AliEveTRDTrackListEditor::ApplyMacros()
   // Now apply the process macros
   iterator = new TList();
   ftlMacroList->GetSelectedEntries(iterator);
-  fM->ApplyProcessMacros(iterator);
+  success = fM->ApplyProcessMacros(iterator);
 
   // Update histogram tab (data has to be reloaded)
   SetModel(fM);
@@ -226,7 +228,7 @@ void AliEveTRDTrackListEditor::ApplyMacros()
 
   // AlieveTRDTrackList::ApplyProcessMacros() automatically selects a macro -> Draw the histogram for it,
   // if a process macro has been applied
-  if (iterator->GetEntries() > 0) 
+  if (success && iterator->GetEntries() > 0) 
   {
     // Set focus on "Histograms" tab
     GetGedEditor()->GetTab()->SetTab("Histograms");
@@ -236,6 +238,13 @@ void AliEveTRDTrackListEditor::ApplyMacros()
 
   if (iterator != 0)  delete iterator;  
   iterator = 0;  
+  
+  if (!success)
+  {
+    new TGMsgBox(gClient->GetRoot(), GetMainFrame(), "Error", 
+                 "AliEveTRDTrackList::ApplyProcessMacros experienced an error (cf. CINT-output)!", 
+                 kMBIconExclamation, kMBOk);  
+  }
 }
 
 //______________________________________________________