]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosJPSI/AddTask_jbook_JPsi.C
-remove parentheses
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / AddTask_jbook_JPsi.C
1 AliAnalysisTask *AddTask_jbook_JPsi(TString config="1",
2                                     Bool_t gridconf=kFALSE,
3                                     Bool_t hasMC=kFALSE,
4                                     ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB){
5
6   //get the current analysis manager
7   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
8   if (!mgr) {
9     Error("AddTask_jbook_JPsi", "No analysis manager found.");
10     return 0;
11   }
12
13   //Do we have an MC handler?
14   TString list = gSystem->Getenv("LIST");
15   if(!list.IsNull()) {
16     if( list.Contains("LHC10h")   || list.Contains("LHC11h")   ) hasMC=kFALSE;
17     if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
18   }
19
20   //Do we have an AOD handler?
21   Bool_t isAOD=(mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class() ? kTRUE : kFALSE);
22
23   // set AOD debug levels
24   if(isAOD) {
25     mgr->AddClassDebug("AliAODTrack", AliLog::kFatal);
26     mgr->AddClassDebug("AliAODpidUtil", AliLog::kInfo);
27   }
28
29   //set config file name
30   TString configFile("");
31   printf("%s \n",gSystem->pwd());
32   TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
33
34   // gsi config
35   if (!trainRoot.IsNull())  configFile="$TRAIN_ROOT/jbook_jpsi/ConfigJpsi_jb_PbPb.C";
36   // alien config
37   else if(!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C .")) {
38     gSystem->Exec(Form("ls -l %s",gSystem->pwd()));
39     configFile=Form("%s/ConfigJpsi_jb_PbPb.C",gSystem->pwd());
40   }
41   else {
42     printf("ERROR: couldn't copy file %s from grid \n",
43            "alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C");
44     return;
45   }
46
47   // aliroot config
48   if(!gridconf && trainRoot.IsNull())
49     configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsi_jb_PbPb.C"; // aliroot config
50
51   // load efficiency maps
52   if(!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/files/effMap*.root ."))
53     gSystem->Exec(Form("ls -l %s",gSystem->pwd()));
54   else {
55     printf("ERROR: couldn't copy file %s from grid \n",
56            "alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/files/effMap*.root");
57     return;
58   }
59
60   //create task
61   AliAnalysisTaskMultiDielectron *task;
62
63   // trigger selection
64   ULong64_t triggerSets[]={AliVEvent::kCentral , AliVEvent::kSemiCentral , AliVEvent::kMB,
65                            AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB};
66   const char* triggerNames[]={"Central","SemiCentral","MB","ALL"};
67   const char* onlineRejection[]={"","CCENT","",""};
68
69   // find out the configured triggers
70   Int_t j=0;
71   for(j=0; j<4; j++) {
72     if(triggers!=triggerSets[j]) continue;
73     else break;
74   }
75
76   // print overall configuration
77   printf("production: %s MC: %d \n",  list.Data(),hasMC);
78   printf("triggers:   %s \n",         triggerNames[j]  );
79   printf("config:     %s Grid: %d \n",configFile.Data(),gridconf);
80
81   //load dielectron configuration file (only once)
82   TString checkconfig="ConfigJpsi_jb_PbPb";
83   if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
84     gROOT->LoadMacro(configFile.Data());
85
86   //define default output container
87   TString containerName = "JPSI.root";
88
89   //add dielectron analysis with different cuts to the task
90   for (Int_t i=0; i<nDie; ++i) { //nDie defined in config file
91
92     //only configs switched ON will pass
93     if(config.Length()<=i || config(i,1)!="1") { printf(" %d switched OFF \n",i); continue; }
94
95     // load configuration
96     AliDielectron *jpsi=ConfigJpsi_jb_PbPb(i,hasMC,triggers);
97     if(!jpsi) continue;
98
99     // create unique title
100     TString unitit = Form("%s_%s",triggerNames[j],jpsi->GetName());
101
102     // create single tasks instead of one multi task (decreasing size of CF container)
103     task = new AliAnalysisTaskMultiDielectron(Form("MultiDieJB_%s",unitit.Data()));
104     task->SetBeamEnergy(1380.);
105     task->SetTriggerMask(triggers);
106     if(strlen(onlineRejection[j])) task->SetFiredTriggerName(onlineRejection[j],kTRUE);
107     if(!hasMC) task->UsePhysicsSelection();
108
109     // event filter
110     AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("vertex","vertex");
111     if(isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
112     eventCuts->SetRequireVertex();
113     eventCuts->SetMinVtxContributors(1);
114     eventCuts->SetVertexZ(-10.,+10.);
115     eventCuts->SetCentralityRange(0,90.);
116     eventCuts->Print();
117     task->SetEventFilter(eventCuts);
118    
119     // add dielectron to the task and manager
120     task->AddDielectron(jpsi);
121     mgr->AddTask(task);
122
123     //create output sub containers
124     AliAnalysisDataContainer *cOutputHist1 =
125       mgr->CreateContainer(Form("jbook_QA_%s",unitit.Data()),
126                            TList::Class(),
127                            AliAnalysisManager::kOutputContainer,
128                            containerName.Data());
129     
130     AliAnalysisDataContainer *cOutputHist2 =
131       mgr->CreateContainer(Form("jbook_CF_%s",unitit.Data()),
132                            TList::Class(),
133                            AliAnalysisManager::kOutputContainer,
134                            containerName.Data());
135     
136     AliAnalysisDataContainer *cOutputHist3 =
137       mgr->CreateContainer(Form("jbook_EventStat_%s",unitit.Data()),
138                            TH1D::Class(),
139                            AliAnalysisManager::kOutputContainer,
140                            containerName.Data());
141
142     mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
143     //  mgr->ConnectOutput(task, 0, coutput1 );
144     mgr->ConnectOutput(task, 1, cOutputHist1);
145     mgr->ConnectOutput(task, 2, cOutputHist2);
146     mgr->ConnectOutput(task, 3, cOutputHist3);
147
148     printf(" %s added\n",jpsi->GetName());
149
150   }
151
152
153   return task;
154 }