]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosLMEE/AddTask_cbaumann_LMEEPbPb2011AOD.C
update from pr task : sjena
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / AddTask_cbaumann_LMEEPbPb2011AOD.C
1 AliAnalysisTask *AddTask_cbaumann_LMEEPbPb2011AOD(Char_t* outputFileName="LMEEoutput.root", 
2           Bool_t runAll=kFALSE,Bool_t setMC=kFALSE,Bool_t getFromAlien=kFALSE, Bool_t PIDbaseline=kFALSE, Bool_t rejOnly=kTRUE,
3           Int_t triggerNames=(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral),Int_t collCands= AliVEvent::kAny) {
4   Bool_t bESDANA=kFALSE; //Autodetect via InputHandler
5   //get the current analysis manager
6   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
7   if (!mgr) {
8         Error("AddTask_cbaumann_LMEEPbPb2011", "No analysis manager found.");
9         return 0;
10   }
11
12
13 //  create task and add it to the manager
14 //      gSystem->AddIncludePath("$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE");
15
16   TString configBasePath("$TRAIN_ROOT/cbaumann_dielectron/");
17   TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
18   if (trainRoot.IsNull()) configBasePath= "$ALICE_ROOT/PWGDQ/dielectron/macrosLMEE/";
19
20
21
22   //Load updated macros from private ALIEN path
23   if (getFromAlien &&
24       (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/ConfigLMEEPbPb2011AOD.C .")) &&
25       (!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/c/cbaumann/PWGDQ/dielectron/macrosLMEE/LMEECutLibAOD.C ."))
26      ) {
27         configBasePath=Form("%s/",gSystem->pwd());
28   }
29
30   TString configFile("ConfigLMEEPbPb2011AOD.C");
31   TString configLMEECutLib("LMEECutLibAOD.C");
32
33   TString configFilePath(configBasePath+configFile);
34   TString configLMEECutLibPath(configBasePath+configLMEECutLib);
35
36   //AOD Usage currently tested with separate task, to be merged
37   if (mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class()){
38         ::Info("AddTaskLMEEPbPb2011", "no dedicated AOD configuration");
39   }
40   else if (mgr->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()){
41         ::Info("AddTaskLMEEPbPb2011AOD","switching on ESD specific code");
42         bESDANA=kTRUE;
43   }
44
45
46   //Do we have an MC handler?
47   Bool_t hasMC=setMC;
48   if (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0)
49         hasMC=kTRUE;
50
51   //load dielectron configuration files
52   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configLMEECutLib.Data()))
53         gROOT->LoadMacro(configLMEECutLibPath.Data());
54   if (!gROOT->GetListOfGlobalFunctions()->FindObject(configFile.Data()))
55         gROOT->LoadMacro(configFilePath.Data());
56
57
58   LMEECutLib* cutlib = new LMEECutLib();
59   AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("MultiDiEData");
60   if (!hasMC) task->UsePhysicsSelection();
61   task->SetTriggerMask(triggerNames);
62   task->SelectCollisionCandidates(collCands);  
63   //Basic Event cuts on z-Vertex,...
64   task->SetEventFilter(cutlib->GetEventCuts(LMEECutLib::kPbPb2011TPCandTOF)); //
65         
66
67
68
69 if (rejOnly) {
70    //obsolete variable, kept not to break existing trains
71 }
72 if (PIDbaseline) {
73    //obsolete variable, kept not to break existing trains
74 }
75
76 //add dielectron analysis with different cuts to the task
77 AliDielectron *lowmass1=ConfigLMEEPbPb2011AOD(1,hasMC,bESDANA);
78 task->AddDielectron(lowmass1);
79 printf("add: %s\n",lowmass1->GetName());
80
81 AliDielectron *lowmass3=ConfigLMEEPbPb2011AOD(3,hasMC,bESDANA);
82 task->AddDielectron(lowmass3);
83 printf("add: %s\n",lowmass3->GetName());
84
85   mgr->AddTask(task);
86
87   //create output container
88   AliAnalysisDataContainer *coutput1 =
89         mgr->CreateContainer("cbaumann_LMEEPbPb2011_tree",
90                 TTree::Class(),
91                 AliAnalysisManager::kExchangeContainer,
92                 outputFileName);
93
94   AliAnalysisDataContainer *cOutputHist1 =
95         mgr->CreateContainer("cbaumann_LMEEPbPb2011_out",
96                 TList::Class(),
97                 AliAnalysisManager::kOutputContainer,
98                 outputFileName);
99
100   AliAnalysisDataContainer *cOutputHist2 =
101         mgr->CreateContainer("cbaumann_LMEEPbPb2011_CF",
102                 TList::Class(),
103                 AliAnalysisManager::kOutputContainer,
104                 outputFileName);
105
106   AliAnalysisDataContainer *cOutputHist3 =
107         mgr->CreateContainer("cbaumann_EventStatPbPb2011",
108                 TH1D::Class(),
109                 AliAnalysisManager::kOutputContainer,
110                 outputFileName);
111
112   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
113   mgr->ConnectOutput(task, 0, coutput1 );
114   mgr->ConnectOutput(task, 1, cOutputHist1);
115   mgr->ConnectOutput(task, 2, cOutputHist2);
116   mgr->ConnectOutput(task, 3, cOutputHist3);
117
118   return task;
119 }