]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosJPSI/AddTask_jpsi_JPsiQA.C
- fix data container naming issues
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / AddTask_jpsi_JPsiQA.C
1 AliAnalysisTask *AddTask_jpsi_JPsiQA(TString prod="",
2                                      Bool_t gridconf=kFALSE,
3                                      ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB) {
4
5   //get the current analysis manager
6   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
7   if (!mgr) {
8     Error("AddTask_jpsi_JPsiQA", "No analysis manager found.");
9     return 0;
10   }
11
12   //Do we have an MC handler?
13   Bool_t hasMC = kFALSE;
14   TString list = gSystem->Getenv("LIST");
15   if( list.IsNull()) list=prod;
16   if( list.Contains("LHC10h")   || list.Contains("LHC11h")   ) hasMC=kFALSE;
17   if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE;
18
19   //Do we have an AOD handler?
20   Bool_t isAOD=(mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class() ? kTRUE : kFALSE);
21
22   // set AOD debug levels
23   if(isAOD) {
24     mgr->AddClassDebug("AliAODTrack", AliLog::kFatal);
25     mgr->AddClassDebug("AliAODpidUtil", AliLog::kInfo);
26   }
27
28   //set config file name
29   TString configFile("");
30   printf("%s \n",gSystem->pwd());
31   TString trainRoot=gSystem->Getenv("TRAIN_ROOT");
32   if (!trainRoot.IsNull())
33     configFile="$TRAIN_ROOT/jbook_jpsi/ConfigJpsiQA_jpsi_PbPb.C";   // gsi config
34   else if(!gSystem->Exec("alien_cp alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C ."))
35     configFile=Form("%s/ConfigJpsiQA_jpsi_PbPb.C",gSystem->pwd());                        // alien config
36   else
37     configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C"; // aliroot config
38
39   if(!gridconf)
40     configFile="$ALICE_ROOT/PWGDQ/dielectron/macrosJPSI/ConfigJpsiQA_jpsi_PbPb.C"; // forced aliroot config
41
42   //create task and add it to the manager
43   AliAnalysisTaskMultiDielectron *task;
44
45   // trigger selection
46   ULong64_t triggerSets[]={AliVEvent::kCentral , AliVEvent::kSemiCentral , AliVEvent::kMB,
47                            AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB};
48   const char* triggerNames[]={"Central","SemiCentral","MB","MB+Cent+SemiCent"};
49
50   // find out the configured triggers
51   Int_t j=0;
52   for(j=0; j<4; j++) {
53     if(triggers!=triggerSets[j]) continue;
54     else break;
55   }
56
57   // print task configuration
58   printf("production: %s MC: %d \n",  list.Data(),hasMC);
59   printf("triggers:   %s \n",         triggerNames[j]  );
60   printf("config:     %s Grid: %d \n",configFile.Data(),gridconf);
61
62   task = new AliAnalysisTaskMultiDielectron((Form("MultiDieData_%s",triggerNames[j])));
63   task->SetTriggerMask(triggers);
64   //task->SetTriggerMask(AliVEvent::kMB);
65
66   if (!hasMC) task->UsePhysicsSelection();
67   mgr->AddTask(task);
68
69   //load dielectron configuration file
70   TString checkconfig="ConfigJpsiQA_jpsi_PbPb";
71   if (!gROOT->GetListOfGlobalFunctions()->FindObject(checkconfig.Data()))
72     gROOT->LoadMacro(configFile.Data());
73
74   //add dielectron analysis with different cuts to the task
75   for (Int_t i=0; i<nDie; ++i) { //nDie defined in config file
76     AliDielectron *jpsi=ConfigJpsiQA_jpsi_PbPb(i,list);
77     if (jpsi ) task->AddDielectron(jpsi);
78     if (jpsi ) printf(" %s added\n",jpsi->GetName());
79   }
80
81   //Add event filter
82   AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","|vtxZ|<10 && ncontrib>0 && centrality<80%");
83   if (isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
84   eventCuts->SetRequireVertex();
85   eventCuts->SetMinVtxContributors(1);
86   eventCuts->SetVertexZ(-10.,+10.);
87   eventCuts->SetCentralityRange(0.0,80.0);
88   task->SetEventFilter(eventCuts);
89
90   //create output container
91   AliAnalysisDataContainer *cOutputHist1 =
92     mgr->CreateContainer(Form("jpsi_QA_%s",triggerNames[j]),
93                          TList::Class(),
94                          AliAnalysisManager::kOutputContainer,
95                          Form("jpsi_%s.root",triggerNames[j]));
96
97   AliAnalysisDataContainer *cOutputHist2 =
98     mgr->CreateContainer(Form("jpsi_CF_%s",triggerNames[j]),
99                          TList::Class(),
100                          AliAnalysisManager::kOutputContainer,
101                          Form("jpsi_%s.root",triggerNames[j]));
102
103   AliAnalysisDataContainer *cOutputHist3 =
104     mgr->CreateContainer(Form("jpsi_EventStat_%s",triggerNames[j]),
105                          TH1D::Class(),
106                          AliAnalysisManager::kOutputContainer,
107                          Form("jpsi_%s.root",triggerNames[j]));
108
109   mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
110   //  mgr->ConnectOutput(task, 0, coutput1 );
111   mgr->ConnectOutput(task, 1, cOutputHist1);
112   mgr->ConnectOutput(task, 2, cOutputHist2);
113   mgr->ConnectOutput(task, 3, cOutputHist3);
114
115   return task;
116 }