]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosLMEE/ESDonlyTasks/AddTask_cbaumann_LMEEnoPID.C
Add control histograms for time stamp, move histogram filling to separate method...
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / ESDonlyTasks / AddTask_cbaumann_LMEEnoPID.C
1 AliAnalysisTask *AddTask_cbaumann_LMEEnoPID(Bool_t withMC = kFALSE,Bool_t enableCF = kFALSE){
2   //get the current analysis manager
3   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
4   if (!mgr) {
5         Error("AddTask_cbaumann_LMEEnoPID", "No analysis manager found.");
6         return 0;
7   }
8
9   //create config File names: TRAIN_ROOT is for running on GSI train, 
10   // ALICE_ROOT for CERN Lego trains
11   TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");
12   TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
13   if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
14   TString configFile("ConfigLMEEnoPID.C");
15   TString configLMEECutLib("LMEECutLib.C");
16
17   TString configFilePath(configBasePath+configFile);
18   TString configLMEECutLibPath(configBasePath+configLMEECutLib);
19
20
21   //AOD Usage not yet testes/avialable-------------------------------------
22
23   if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
24         ::Info("AddTaskLMEEnoPID", "no dedicated AOD configuration");
25 //      configFile="$TRAIN_ROOT/util/dielectron/dielectron/macros/ConfigLMEEnoPIDAOD.C";        
26         
27   }
28
29   //Do we have an MC handler?
30   Bool_t hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
31   if (!hasMC) hasMC=withMC;
32
33 //  create task and add it to the manager
34
35   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
36         gROOT->LoadMacro(configLMEECutLibPath.Data());
37   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
38         gROOT->LoadMacro(configFilePath.Data());
39
40
41   LMEECutLib* cutlib = new LMEECutLib();
42   AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");
43   if (!hasMC) task->UsePhysicsSelection();
44   task->SetEventFilter(cutlib->GetEventCuts(LMEECutLib::kpp2010TPCandTOF)); //
45         
46
47   //load dielectron configuration file
48
49   //add dielectron analysis with different cuts to the task
50    //no memleak
51   AliDielectron *lowmass0=ConfigLMEEnoPID(0,hasMC,enableCF);
52   task->AddDielectron(lowmass0);
53   printf("add: %s\n",lowmass0->GetName());
54
55   AliDielectron *lowmass1=ConfigLMEEnoPID(1,hasMC,enableCF);
56   task->AddDielectron(lowmass1);
57   printf("add: %s\n",lowmass1->GetName());
58
59    AliDielectron *lowmass2=ConfigLMEEnoPID(2,hasMC,enableCF);
60   task->AddDielectron(lowmass2);
61   printf("add: %s\n",lowmass2->GetName());
62    
63   mgr->AddTask(task);
64
65   //create output container
66   AliAnalysisDataContainer *coutput1 =
67         mgr->CreateContainer("cbaumann_LMEEnoPID_tree",
68                 TTree::Class(),
69                 AliAnalysisManager::kExchangeContainer,
70                 "cbaumann_LMEEnoPID_default.root");
71
72   AliAnalysisDataContainer *cOutputHist1 =
73         mgr->CreateContainer("cbaumann_LMEEnoPID_out",
74                 TList::Class(),
75                 AliAnalysisManager::kOutputContainer,
76                 "cbaumann_LMEEnoPID_out.root");
77
78   AliAnalysisDataContainer *cOutputHist2 = 0x0;
79  if (enableCF) {
80         cOutputHist2 =
81         mgr->CreateContainer("cbaumann_LMEEnoPID_CF",
82                 TList::Class(),
83                 AliAnalysisManager::kOutputContainer,
84                 "cbaumann_LMEEnoPID_out.root");
85  }
86   AliAnalysisDataContainer *cOutputHist3 =
87         mgr->CreateContainer("cbaumann_EventStatnoPID",
88                 TH1D::Class(),
89                 AliAnalysisManager::kOutputContainer,
90                 "cbaumann_LMEEnoPID_out.root");
91
92
93   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
94   mgr->ConnectOutput(task, 0, coutput1 );
95   mgr->ConnectOutput(task, 1, cOutputHist1);
96 if (enableCF)  mgr->ConnectOutput(task, 2, cOutputHist2);
97   mgr->ConnectOutput(task, 3, cOutputHist3);
98
99   return task;
100 }