]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/qaRec/run.C
last modification of the task before going into production
[u/mrichter/AliRoot.git] / TRD / qaRec / run.C
index 54cd014b5e03eb7015d072aa1a46c38f4b7addd4..cc57343a60e0f8639c4855ef4f639b84400cb7f5 100644 (file)
@@ -44,6 +44,7 @@
 #include "TAlienCollection.h"
 #include "TGridCollection.h"
 #include "TGridResult.h"
+#include "TGeoGlobalMagField.h"
 
 #include "AliMagF.h"
 #include "AliTracker.h"
@@ -58,6 +59,7 @@
 #include "TRD/AliTRDtrackerV1.h"
 #include "TRD/AliTRDcalibDB.h"
 #include "TRD/qaRec/AliTRDtrackInfo/AliTRDeventInfo.h"
+#include "TRD/qaRec/AliTRDcheckESD.h"
 #include "TRD/qaRec/AliTRDtrackInfoGen.h"
 #include "TRD/qaRec/AliTRDtrackingEfficiency.h"
 #include "TRD/qaRec/AliTRDtrackingEfficiencyCombined.h"
@@ -93,11 +95,17 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0)
   if(gSystem->Load("libTRDqaRec.so")<0) return;
   
   // DB INITIALIZATION
+  //TODO We should use the GRP if available similar to AliReconstruction::InitGRP()!
   // initialize OCDB manager
   AliCDBManager *cdbManager = AliCDBManager::Instance();
   cdbManager->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
   cdbManager->SetRun(0);
   cdbManager->SetCacheFlag(kFALSE);
+  // initialize magnetic field.
+  AliMagF *field = 0x0;
+  field = new AliMagF("Maps","Maps", 2, 1., 10., AliMagF::k5kG);
+  //field = new AliMagF("Maps","Maps", 2, 0., 10., AliMagF::k2kG);
+  TGeoGlobalMagField::Instance()->SetField(field);
 
   // initialize TRD settings
   AliTRDcalibDB *cal = AliTRDcalibDB::Instance();
@@ -108,11 +116,11 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0)
   Bool_t fHasFriends = kTRUE;
   TObjArray *tasksArray = TString(tasks).Tokenize(" ");
 
-  Int_t fSteerTask = 0; SETBIT(fSteerTask, kInfoGen);
+  Int_t fSteerTask = 0;
   for(Int_t isel = 0; isel < tasksArray->GetEntriesFast(); isel++){
     TString s = (dynamic_cast<TObjString *>(tasksArray->UncheckedAt(isel)))->String();
     if(s.CompareTo("ALL") == 0){
-      for(Int_t itask = 1; itask < NQATASKS; itask++) SETBIT(fSteerTask, itask);
+      for(Int_t itask = 0; itask < NQATASKS; itask++) SETBIT(fSteerTask, itask);
       continue;
     } else if(s.CompareTo("NOFR") == 0){ 
       fHasFriends = kFALSE;
@@ -122,7 +130,7 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0)
       Bool_t foundOpt = kFALSE;  
       for(Int_t itask = 1; itask < NTRDTASKS; itask++){
         if(s.CompareTo(fgkTRDtaskOpt[itask]) != 0) continue;
-        SETBIT(fSteerTask, itask);
+        SETBIT(fSteerTask, itask); SETBIT(fSteerTask, 0);
         foundOpt = kTRUE;
         break;
       }
@@ -162,33 +170,40 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0)
 
   //____________________________________________
   // Make the analysis manager
-  AliAnalysisManager *mgr = new AliAnalysisManager("TRD QA Reconstruction Manager");
+  AliAnalysisManager *mgr = new AliAnalysisManager("TRD Reconstruction QA");
   //mgr->SetSpecialOutputLocation(source); // To Be Changed
   AliVEventHandler *esdH = 0x0, *mcH = 0x0;
   mgr->SetInputEventHandler(esdH = new AliESDInputHandler);
   if(fHasMCdata) mgr->SetMCtruthEventHandler(mcH = new AliMCEventHandler());
   //mgr->SetDebugLevel(10);
 
+  //____________________________________________
+  // TRD check ESD
+  AliTRDcheckESD *checkESD = new AliTRDcheckESD();
+  mgr->AddTask(checkESD);
+  checkESD->SetMC(fHasMCdata);
+  mgr->ConnectInput(checkESD, 0, mgr->GetCommonInputContainer());  mgr->ConnectOutput(checkESD, 0, mgr->CreateContainer(checkESD->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", checkESD->GetName())));
+
   //____________________________________________
   // TRD track summary generator
-  mgr->AddTask(task = new AliTRDtrackInfoGen());
-  taskPtr[(Int_t)kInfoGen] = task;
-  task->SetDebugLevel(1);
-  task->SetMCdata(fHasMCdata);
-  // Create containers for input/output
-  AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("data", TChain::Class(), AliAnalysisManager::kInputContainer);
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("trackInfo", TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
-  AliAnalysisDataContainer *coutput1a = mgr->CreateContainer("eventInfo", AliTRDeventInfo::Class(), AliAnalysisManager::kExchangeContainer);
-  mgr->ConnectInput( task, 0, cinput1);
-  mgr->ConnectOutput(task, 0, coutput1);
-  mgr->ConnectOutput(task, 1, coutput1a);
+       if(TSTBIT(fSteerTask, kInfoGen)){
+    mgr->AddTask(task = new AliTRDtrackInfoGen());
+    taskPtr[(Int_t)kInfoGen] = task;
+    task->SetDebugLevel(0);
+    task->SetMCdata(fHasMCdata);
+    mgr->ConnectInput( task, 0, mgr->GetCommonInputContainer());
+    AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("trackInfo", TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
+    AliAnalysisDataContainer *coutput1a = mgr->CreateContainer("eventInfo", AliTRDeventInfo::Class(), AliAnalysisManager::kExchangeContainer);
+    mgr->ConnectOutput(task, 0, coutput1);
+    mgr->ConnectOutput(task, 1, coutput1a);
+  }
 
   //____________________________________________
   // TRD detector checker
        if(TSTBIT(fSteerTask, kCheckDetector)){
     mgr->AddTask(task = new AliTRDcheckDetector());
     taskPtr[(Int_t)kCheckDetector] = task;
-    task->SetDebugLevel(4);
+    task->SetDebugLevel(0);
     task->SetMCdata(fHasMCdata);
     
     // Create containers for input/output
@@ -228,7 +243,7 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0)
     taskPtr[(Int_t)kResolution] = task;
     task->SetMCdata(fHasMCdata);
     task->SetPostProcess(kFALSE);
-    task->SetDebugLevel(1);
+    task->SetDebugLevel(0);
     
     // Create containers for input/output
     mgr->ConnectInput( task, 0, coutput1);
@@ -325,13 +340,13 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0)
   printf("\n\n");
   //mgr->PrintStatus();
 
-  mgr->StartAnalysis("local",chain);
+  mgr->StartAnalysis("local", chain);
 
   timer.Stop();
   timer.Print();  
 
   cal->Terminate();
-  delete field;
+  TGeoGlobalMagField::Instance()->SetField(NULL);
   delete cdbManager;
   for(Int_t it=NTRDTASKS; it--; ){ 
     if(taskPtr[it]){ 
@@ -339,6 +354,8 @@ void run(Char_t *tasks="ALL", const Char_t *files=0x0)
       delete taskPtr[it];
     }
   }
+  delete checkESD;
+
   if(mcH) delete mcH;
   delete esdH;
   delete mgr;