]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/TenderSupplies/AddTaskTender.C
Changing to centrality dependent corrections
[u/mrichter/AliRoot.git] / ANALYSIS / TenderSupplies / AddTaskTender.C
index 5f8ed739b747e36bb36cd5f7d07ff13095827bab..5f90b8864172ba7a52f91dd7e992927f6852996e 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,
+                               Bool_t useEmc=kFALSE,
+                               Bool_t usePtFix=kFALSE)
+{
+  if (!(useV0 | useTPC | useTOF | useTRD | usePID | useVTX | | useT0 | useEmc | usePtFix)) {
+     ::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()->IsA()!=AliESDInputHandler::Class()) {
-    Error("AddTask_tender_Tender","The analysis tender only works with ESD input!");
+  if (!mgr->GetInputEventHandler()->InheritsFrom(AliESDInputHandler::Class())) {
+    ::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);
   
+  //check that that tender is the first task after the pid response
+  TString firstName(mgr->GetTasks()->First()->GetName());
+  Bool_t isSecond=(mgr->GetTasks()->At(1) == (TObject*)tender);
+
+  if (! (firstName=="PIDResponseTask" && isSecond )){
+    Fatal("AddTaskTender","When using the tender the first task needs to be the PIDResponse and the tender the second task!!!");
+    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");
-  tender->AddSupply(tpcSupply);
+  if (useTPC) {
+     AliTPCTenderSupply *tpcSupply=new AliTPCTenderSupply("TPCtender");
+     tpcSupply->SetDebugLevel(2);
+     //tpcSupply->SetMip(50.);
+     tender->AddSupply(tpcSupply);
+  }   
+
+  //========= Attach track 1/pt correction supply ======
+  if (usePtFix) {
+     AliTrackFixTenderSupply *trfixSupply=new AliTrackFixTenderSupply("PTInvFix");
+     //trfixSupply->SetDebugLevel(2);
+     tender->AddSupply(trfixSupply);
+  }   
+
+  //========= Attach T0 supply ======
+  if (useT0) {
+    AliT0TenderSupply *t0Tender = new AliT0TenderSupply("T0tender");
+    t0Tender ->SetPass4LHC11aCorrection(kTRUE);
+    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");
 
-  //========= Attach PID supply ======
-  tender->AddSupply(new AliPIDTenderSupply("PIDtender"));
+    trdSupply->SetLoadDeadChambersFromCDB();                    // Mask Bad chambers
+    trdSupply->SetPIDmethod(AliTRDTenderSupply::k1DLQpid);
+    trdSupply->SwitchOffGainCorrection();                       // Correction only on pass 1
+    trdSupply->SetNormalizationFactor(0.12697,114737,130850);   // 1 otherwise
+    trdSupply->SetRedoTRDMatching(kTRUE);
+    tender->AddSupply(trdSupply);
+  }  
 
   //========= Attach Primary Vertex supply ======
-  tender->AddSupply(new AliVtxTenderSupply("PriVtxtender"));
-  
+  if (useVTX) {
+    tender->AddSupply(new AliVtxTenderSupply("PriVtxtender"));
+  }  
+
+  //========= Attach EMCAL supply ======
+  if (useEmc) {
+    AliEMCALTenderSupply *emcSupply = new AliEMCALTenderSupply("EmcTender");
+    emcSupply->SetDefaults();
+    tender->AddSupply(emcSupply);
+  }  
+
+  //========= Attach PID supply ======
+  if (usePID) {
+    AliPIDTenderSupply *pidSupply=new AliPIDTenderSupply("PIDtender");
+    tender->AddSupply(pidSupply);
+  }
+
   //================================================
   //              data containers
   //================================================
@@ -46,7 +117,7 @@ AliAnalysisTask *AddTaskTender(){
  
   //           connect containers
   mgr->ConnectInput  (tender,  0, mgr->GetCommonInputContainer() );
-  mgr->ConnectOutput (tender,  0, coutput1);
+  mgr->ConnectOutput (tender,  1, coutput1);
  
   return tender;
 }