]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
in the dtor removed all the folders related to PHOS
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 12 Sep 2001 06:37:22 +0000 (06:37 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 12 Sep 2001 06:37:22 +0000 (06:37 +0000)
PHOS/AliPHOS.cxx

index fd5aea7b7575c33367d80d5a63cefb89123518b2..015abafa67a5873716844f76ae3f5d75dd06e89c 100644 (file)
@@ -49,6 +49,7 @@ AliPHOS:: AliPHOS() : AliDetector()
 {
   // Create folder and task hierarchy
   fName="PHOS";
+  fTreeQA = 0 ;
   CreatePHOSWhiteBoard();
 
 }
@@ -57,6 +58,7 @@ AliPHOS:: AliPHOS() : AliDetector()
 AliPHOS::AliPHOS(const char* name, const char* title): AliDetector(name, title) 
 {
   // Create folder and task hierarchy
+  fTreeQA = 0 ; 
   CreatePHOSWhiteBoard(); 
 }
 
@@ -70,103 +72,115 @@ void AliPHOS::CreatePHOSWhiteBoard()
   //  add the Alice QA Alarms
   // this should be done of course by AliRun
   //==================== BEG TO BE DONE BY AliRUN ===========================
-  TFolder *alice = gROOT->GetRootFolder()->AddFolder("YSAlice","Alice Folder") ;  
-  gROOT->GetListOfBrowsables()->Add(alice, "YSAlice") ;
-
-  TFolder * aliceF  = alice->AddFolder("WhiteBoard", "Alice memory Folder") ; 
-  //  make it the owner of the objects that it contains
-  aliceF->SetOwner() ;
-  // geometry folder 
-  TFolder * geomF = aliceF->AddFolder("Geometry", "Geometry objects") ; 
-  // alarms folder
-  TFolder * alarmsF = aliceF->AddFolder("QAAlarms", "Alarms raised by QA check") ; 
-  // Hits folder
-  TFolder * hitsF = aliceF->AddFolder("Hits", "Hits") ; 
-  // SDigits folder
-  TFolder * sdigitsF = aliceF->AddFolder("SDigits", "Summable Digits") ; 
-  // Digits folder
-  TFolder * digitsF = aliceF->AddFolder("Digits", "Digits") ; 
-  // RecPoints folder
-  TFolder * rpointsF = aliceF->AddFolder("RecPoints", "RecPoints") ; 
-  // TrackSegments folder
-  TFolder * tsF = aliceF->AddFolder("TrackSegments", "TrackSegments") ; 
-  // RecParticles folder
-  TFolder * rparticlesF = aliceF->AddFolder("RecParticles", "RecParticles") ; 
-  //  make it the owner of the objects that it contains
-  alarmsF->SetOwner() ;
-  hitsF->SetOwner() ;
-  sdigitsF->SetOwner() ;
-  digitsF->SetOwner() ;
-  rpointsF->SetOwner() ;
-  tsF->SetOwner() ;
-  rparticlesF->SetOwner() ;
-
-  // Tasks folder
-  TFolder * aliceT  = alice->AddFolder("tasks", "Alice tasks Folder") ; 
-  //  make it the owner of the objects that it contains
-  aliceT->SetOwner() ;
-
-  TTask * aliceQA = new TTask("QA", "Alice QA tasks") ;
-  aliceT->Add(aliceQA); 
-  TTask * aliceSD = new TTask("SDigitizer", "Alice SDigitizer") ;
-  aliceT->Add(aliceSD); 
-
-  TTask * aliceDi = new TTask("Digitizer", "Alice Digitizer") ;
-  aliceT->Add(aliceDi); 
-
-  TTask * aliceRe = new TTask("Reconstructioner", "Alice Reconstructioner") ;
-  aliceT->Add(aliceRe); 
-
+  if ( ! (gROOT->GetRootFolder()->FindObject("YSAlice")) ) {
+    TFolder *alice = gROOT->GetRootFolder()->AddFolder("YSAlice","Alice Folder") ;  
+    gROOT->GetListOfBrowsables()->Add(alice, "YSAlice") ;
+    
+    TFolder * aliceF  = alice->AddFolder("WhiteBoard", "Alice memory Folder") ; 
+    //  make it the owner of the objects that it contains
+    aliceF->SetOwner() ;
+    // geometry folder 
+    aliceF->AddFolder("Geometry", "Geometry objects") ; 
+    // alarms folder
+    TFolder * alarmsF = aliceF->AddFolder("QAAlarms", "Alarms raised by QA check") ; 
+    // Hits folder
+    TFolder * hitsF = aliceF->AddFolder("Hits", "Hits") ; 
+    // SDigits folder
+    TFolder * sdigitsF = aliceF->AddFolder("SDigits", "Summable Digits") ; 
+    // Digits folder
+    TFolder * digitsF = aliceF->AddFolder("Digits", "Digits") ; 
+    // RecPoints folder
+    TFolder * rpointsF = aliceF->AddFolder("RecPoints", "RecPoints") ; 
+    // TrackSegments folder
+    TFolder * tsF = aliceF->AddFolder("TrackSegments", "TrackSegments") ; 
+    // RecParticles folder
+    TFolder * rparticlesF = aliceF->AddFolder("RecParticles", "RecParticles") ; 
+    //  make it the owner of the objects that it contains
+    alarmsF->SetOwner() ;
+    hitsF->SetOwner() ;
+    sdigitsF->SetOwner() ;
+    digitsF->SetOwner() ;
+    rpointsF->SetOwner() ;
+    tsF->SetOwner() ;
+    rparticlesF->SetOwner() ;
+    
+    // Tasks folder
+    TFolder * aliceT  = alice->AddFolder("tasks", "Alice tasks Folder") ; 
+    //  make it the owner of the objects that it contains
+    aliceT->SetOwner() ;
+    
+    TTask * aliceQA = new TTask("QA", "Alice QA tasks") ;
+    aliceT->Add(aliceQA); 
+    
+    TTask * aliceSD = new TTask("SDigitizer", "Alice SDigitizer") ;
+    aliceT->Add(aliceSD); 
+    
+    TTask * aliceDi = new TTask("Digitizer", "Alice Digitizer") ;
+    aliceT->Add(aliceDi); 
+    
+    TTask * aliceRe = new TTask("Reconstructioner", "Alice Reconstructioner") ;
+    aliceT->Add(aliceRe); 
+    
   //==================== END TO BE DONE BY AliRUN ===========================
-
+  }
   // =================== Creating PHOS related folders
   char * tempo = new char[80] ; 
 
   // creates the PHOSQA (QAChecker knows how to add itself in the tasks list)
   sprintf(tempo, "%sCheckers container",GetName() ) ; 
   fQATask = new AliPHOSQAChecker(GetName(), tempo);  
-
+  
   // creates the PHOS SDigitizer and adds it to alice main SDigitizer task 
   sprintf(tempo, "%sSDigitizers container",GetName() ) ; 
   TTask * sdT = new TTask(GetName(), tempo);   
-  aliceSD->Add(sdT) ; 
+  TTask * task = (TTask*)(gROOT->GetRootFolder()->FindObjectAny("SDigitizer")) ; 
+  task->Add(sdT) ; 
 
   // creates the PHOS Digitizer and adds it to alice main Digitizer task 
   sprintf(tempo, "%sDigitizers container",GetName() ) ; 
   TTask * dT = new TTask(GetName(), tempo);   
-  aliceDi->Add(dT) ; 
+  task = (TTask*)(gROOT->GetRootFolder()->FindObjectAny("Digitizer")) ; 
+  task->Add(dT) ; 
 
   // creates the PHOS reconstructioner and adds it to alice main Reconstructioner task 
   sprintf(tempo, "%s Reconstructioner container",GetName() ) ; 
   TTask * reT = new TTask(GetName(), tempo); 
-  aliceRe->Add(reT) ; 
+  task = (TTask*)(gROOT->GetRootFolder()->FindObjectAny("Reconstructioner")) ; 
+  task->Add(reT) ; 
 
   // creates the PHOS clusterizer, tracksegment maker and PID and adds it to the PHOS Reconstructioner task
 
   delete tempo ;  
 
   // creates the PHOS geometry  folder
-  geomF->AddFolder("PHOS", "Geometry for PHOS") ; 
+  TFolder * folder = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("Geometry")) ; 
+  folder->AddFolder("PHOS", "Geometry for PHOS") ; 
   // creates the PHOSQA alarm folder
-  alarmsF->AddFolder("PHOS", "QA alarms from PHOS") ; 
+  folder = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("QAAlarms")) ; 
+  folder->AddFolder("PHOS", "QA alarms from PHOS") ; 
   // creates the PHOS Hits folder
-  hitsF->AddFolder("PHOS", "Hits for PHOS") ; 
+  folder = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("Hits")) ;
+  folder->AddFolder("PHOS", "Hits for PHOS") ; 
   // creates the PHOS Summable Digits folder
-  sdigitsF->AddFolder("PHOS", "Summable Digits for PHOS") ; 
+  folder = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("SDigits")) ;
+  folder->AddFolder("PHOS", "Summable Digits for PHOS") ; 
   // creates the PHOS Digits folder
-  digitsF->AddFolder("PHOS", "Digits for PHOS") ; 
+  folder = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("Digits")) ;
+  folder->AddFolder("PHOS", "Digits for PHOS") ; 
   // creates the PHOS RecPoints folder
-  TFolder * prpF = rpointsF->AddFolder("PHOS", "RecPoints for PHOS") ;
+  folder = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("RecPoints")) ;
+  TFolder * prpF = folder->AddFolder("PHOS", "RecPoints for PHOS") ;
   // creates the PHOS EMC RecPoints folder
   prpF->AddFolder("emc", "EMC RecPoints for PHOS") ;
   // creates the PHOS CPV RecPoints folder
   prpF->AddFolder("cpv", "CPV RecPoints for PHOS") ;
   
   // creates the PHOS TrackSegments folder
-  tsF->AddFolder("PHOS", "Track Segments for PHOS") ; 
+  folder = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("TrackSegments")) ;
+  folder->AddFolder("PHOS", "Track Segments for PHOS") ; 
   // creates the PHOS RecParticles folder
-  rparticlesF->AddFolder("PHOS", "RecParticles for PHOS") ;
+  folder = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("RecParticles")) ;
+  folder->AddFolder("PHOS", "RecParticles for PHOS") ;
  
 }
 //____________________________________________________________________________
@@ -174,11 +188,71 @@ AliPHOS::~AliPHOS()
 {  
   // remove the alice folder and alice QA task that PHOS creates instead of AliRun
   
-  // remove and delete the PHOS QA tasks
-  TTask * aliceQA = (TTask*)gROOT->FindObjectAny("YSAlice/tasks/QA") ; 
-  fQATask->GetListOfTasks()->Delete() ;
-  aliceQA->GetListOfTasks()->Remove(fQATask) ; 
-  delete fQATask ;  
+  // remove and delete the PHOS related items in folders
+  // Geometry 
+  TFolder * foldera = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("Geometry")) ; 
+  TFolder * folderp = (TFolder*)foldera->FindObject("PHOS") ;
+  folderp->Clear() ; 
+  foldera->Remove(folderp) ; 
+  // QA Alarms
+  foldera = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("QAAlarms")) ;
+  folderp = (TFolder*)foldera->FindObject("PHOS") ;
+  folderp->Clear() ; 
+  foldera->Remove(folderp) ; 
+  // Hits
+  foldera = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("Hits")) ;
+  folderp = (TFolder*)foldera->FindObject("PHOS") ;
+  folderp->Clear() ; 
+  foldera->Remove(folderp) ; 
+  // SDigits
+  foldera = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("SDigits")) ;
+  folderp = (TFolder*)foldera->FindObject("PHOS") ;
+  folderp->Clear() ; 
+  foldera->Remove(folderp) ; 
+  // Digits
+  foldera = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("Digits")) ;
+  folderp = (TFolder*)foldera->FindObject("PHOS") ;
+  folderp->Clear() ; 
+  foldera->Remove(folderp) ; 
+  // RecPoints
+  foldera = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("RecPoints")) ;
+  folderp = (TFolder*)foldera->FindObject("PHOS") ;
+  folderp->Clear() ; 
+  foldera->Remove(folderp) ; 
+   // TrackSegments
+  foldera = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("TrackSegments")) ;
+  folderp = (TFolder*)foldera->FindObject("PHOS") ;
+  folderp->Clear() ; 
+  foldera->Remove(folderp) ; 
+   // RecParticles
+  foldera = (TFolder*)(gROOT->GetRootFolder()->FindObjectAny("RecParticles")) ;
+  folderp = (TFolder*)foldera->FindObject("PHOS") ;
+  folderp->Clear() ; 
+  foldera->Remove(folderp) ; 
+
+  //QA tasks
+  TTask * taska = (TTask*)gROOT->FindObjectAny("QA") ; 
+  TTask * taskp = (TTask*)taska->GetListOfTasks()->FindObject("PHOS") ; 
+  //  taskp->GetListOfTasks()->Delete() ; 
+  taska->GetListOfTasks()->Remove(taskp) ; 
+
+  //SDigitizer tasks
+  taska = (TTask*)gROOT->FindObjectAny("SDigitizer") ; 
+  taskp = (TTask*)taska->GetListOfTasks()->FindObject("PHOS") ; 
+  taskp->GetListOfTasks()->Delete() ; 
+  taska->GetListOfTasks()->Remove(taskp) ; 
+
+  //Digitizer tasks
+  taska = (TTask*)gROOT->FindObjectAny("Digitizer") ; 
+  taskp = (TTask*)taska->GetListOfTasks()->FindObject("PHOS") ; 
+  taskp->GetListOfTasks()->Delete() ; 
+  taska->GetListOfTasks()->Remove(taskp) ; 
+
+  //Reconstructioner tasks
+  taska = (TTask*)gROOT->FindObjectAny("Reconstructioner") ; 
+  taskp = (TTask*)taska->GetListOfTasks()->FindObject("PHOS") ; 
+  taskp->GetListOfTasks()->Delete() ; 
+  taska->GetListOfTasks()->Remove(taskp) ; 
   
   // remove and delete aliceQA (should be done by AliRun) 
 }