]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/TenderSupplies/AddTaskTender.C
New version of Add task tender allowing to customize the components
[u/mrichter/AliRoot.git] / ANALYSIS / TenderSupplies / AddTaskTender.C
index df6d7086173e1f9f5083ac9e5891d060238bf5a9..052da92e3248acc44c27a892a5ee47a69d88cd5b 100644 (file)
-AliAnalysisTask *AddTaskTender(){
+AliAnalysisTask *AddTaskTender(Bool_t useV0=kFALSE, 
+                               Bool_t useTPC=kTRUE,
+                               Bool_t useTOF=kTRUE,
+                               Bool_t useTRD=kTRUE,
+                               Bool_t usePID=kTRUE,
+                               Bool_t useVTX=kTRUE,
+                               Bool_t useT0=kTRUE){
+  if (!(useV0 | useTPC | useTOF | useTRD | usePID | useVTX)) {
+     ::Error("AddTaskTender", "No supply added to tender, so tender not created");
+     return 0;
+  }   
   //get the current analysis manager
+  Bool_t checkEvtSelection = useV0;
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
-    Error("AddTask_tender_Tender", "No analysis manager found.");
+    ::Error("AddTaskTender", "No analysis manager found.");
     return 0;
   }
   // currently don't accept AOD input
   if (!mgr->GetInputEventHandler()->InheritsFrom(AliESDInputHandler::Class())) {
-    Error("AddTask_tender_Tender","The analysis tender only works with ESD input!");
+    ::Error("AddTask_tender_Tender","The analysis tender only works with ESD input!");
     return 0;
   }
 
   
   //========= Add tender to the ANALYSIS manager and set default storage =====
   AliTender *tender=new AliTender("AnalysisTender");
+  tender->SetCheckEventSelection(checkEvtSelection);
   tender->SetDefaultCDBStorage("raw://");
   mgr->AddTask(tender);
+  if (checkEvtSelection) {
+    if (mgr->GetTasks()->First() != (TObject*)tender ) {
+      TString firstName(mgr->GetTasks()->First()->GetName());
+      Bool_t isSecond=(mgr->GetTasks()->At(1) == (TObject*)tender);
+      if (! (firstName=="PIDResponseTask" && isSecond )){
+        Fatal("AddTaskTender","When setting the tender to check the event selection, it has to be the first wagon, or the first after the PID Response!");
+        return NULL;
+      }
+    }
+  }
   
+  //========= Attach VZERO supply ======
+
+  if (useV0) {
+     AliVZEROTenderSupply *vzeroSupply=new AliVZEROTenderSupply("VZEROtender");
+     vzeroSupply->SetDebug(kFALSE);
+     tender->AddSupply(vzeroSupply);
+  }   
+
   //========= Attach TPC supply ======
-  AliTPCTenderSupply *tpcSupply=new AliTPCTenderSupply("TPCtender");
-  tpcSupply->SetDebugLevel(2);
-  tpcSupply->SetMip(50.);
-  tender->AddSupply(tpcSupply);
+  if (useTPC) {
+     AliTPCTenderSupply *tpcSupply=new AliTPCTenderSupply("TPCtender");
+     tpcSupply->SetDebugLevel(2);
+     //tpcSupply->SetMip(50.);
+     tender->AddSupply(tpcSupply);
+  }   
+
+  //========= Attach T0 supply ======
+  if (useT0) {
+    AliT0TenderSupply *t0Tender = new AliT0TenderSupply("T0tender");
+    tender->AddSupply(t0Tender);
+  }   
 
   //========= Attach TOF supply ======
-  AliTOFTenderSupply *TOFtender = new AliTOFTenderSupply("TOFtender");
-  tender->AddSupply(TOFtender);
-  
+  if (useTOF) {
+    AliTOFTenderSupply *tofTender = new AliTOFTenderSupply("TOFtender");
+    tender->AddSupply(tofTender);
+ }   
+
   //========= Attach TRD supply ======
-  AliTRDTenderSupply *trdSupply=new AliTRDTenderSupply("TRDtender");
-  tender->AddSupply(trdSupply);
+  if (useTRD) {
+    AliTRDTenderSupply *trdSupply=new AliTRDTenderSupply("TRDtender");
+    trdSupply->SetLoadReferencesFromCDB();
+    // Mask Bad chambers
+    trdSupply->AddBadChamber(265);      // low drift
+    trdSupply->AddBadChamber(50);
+    trdSupply->AddBadChamber(524);      // low drift
+    trdSupply->AddBadChamber(32);       // intermediate gain
+    trdSupply->AddBadChamber(15);
+    trdSupply->AddBadChamber(231);      // low gain
+    trdSupply->AddBadChamber(273);      // intermediate gain
+    trdSupply->AddBadChamber(532);
+    trdSupply->AddBadChamber(5);        // low drift
+    trdSupply->AddBadChamber(227);
+    trdSupply->AddBadChamber(287);      // low drift
+    trdSupply->AddBadChamber(212);      // intermediate gain
+    trdSupply->AddBadChamber(228);      // low gain
+    trdSupply->AddBadChamber(52);       // low gain
+    trdSupply->AddBadChamber(169);      // low drift
+    trdSupply->AddBadChamber(236);      // low drift
+
+    trdSupply->SetPIDmethod(AliTRDTenderSupply::k1DLQpid);
+    trdSupply->SetNormalizationFactor(1./7.603);
+    tender->AddSupply(trdSupply);
+  }  
 
   //========= Attach PID supply ======
-  tender->AddSupply(new AliPIDTenderSupply("PIDtender"));
+  if (usePID) {
+    tender->AddSupply(new AliPIDTenderSupply("PIDtender"));
+  }  
 
   //========= Attach Primary Vertex supply ======
-  tender->AddSupply(new AliVtxTenderSupply("PriVtxtender"));
-  
+  if (useVTX) {
+    tender->AddSupply(new AliVtxTenderSupply("PriVtxtender"));
+  }  
+
   //================================================
   //              data containers
   //================================================
@@ -48,7 +116,7 @@ AliAnalysisTask *AddTaskTender(){
  
   //           connect containers
   mgr->ConnectInput  (tender,  0, mgr->GetCommonInputContainer() );
-  mgr->ConnectOutput (tender,  0, coutput1);
+  mgr->ConnectOutput (tender,  1, coutput1);
  
   return tender;
 }