]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/macros/AddTask_PhotonQA.C
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_PhotonQA.C
1 void AddTask_PhotonQA(  TString V0ReaderCutNumber = "0000000060084001001500000000", 
2                         TString TaskCutnumber = "0000000090092663743800000000",
3                         Bool_t IsMC = kFALSE,
4                         Int_t IsHeavyIon = 0,
5                         Bool_t kHistograms = kTRUE, 
6                         Bool_t kTree = kTRUE,
7                         TString V0ReaderCutNumberAODBranch = "0000000060084001001500000", 
8                         Bool_t runBasicQAWithStandardOutput = kTRUE,
9                         Bool_t doEtaShiftV0Reader = kFALSE 
10                      ){
11              
12    // Suitable Cutnumbers for the V0 Reader for
13    // PbPb: V0ReaderCutNumber =  "1000000060084001001500000000"; (V0Mult MC)
14    //  or   V0ReaderCutNumber =  "5000000060084001001500000000" (TPC mult MC)
15    // pPb: V0ReaderCutNumber =   "8000000060084001001500000000";
16    // pp: V0ReaderCutNumber =    "0000000060084001001500000000";
17
18    
19    // ================= Load Librariers =================================
20    gSystem->Load("libCore.so");  
21    gSystem->Load("libTree.so");
22    gSystem->Load("libGeom.so");
23    gSystem->Load("libVMC.so");
24    gSystem->Load("libPhysics.so");
25    gSystem->Load("libMinuit");
26    gSystem->Load("libSTEERBase");
27    gSystem->Load("libESD");
28    gSystem->Load("libAOD");
29    gSystem->Load("libANALYSIS");
30    gSystem->Load("libANALYSISalice");  
31    gSystem->Load("libPWGGAGammaConv.so");
32    gSystem->Load("libCDB.so");
33    gSystem->Load("libSTEER.so");
34    gSystem->Load("libSTEERBase.so");
35    gSystem->Load("libTENDER.so");
36    gSystem->Load("libTENDERSupplies.so");
37       
38    // ================== GetAnalysisManager ===============================
39    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
40    if (!mgr) {
41       Error(Form("AddTask_GammaConvV1_%i",trainConfig), "No analysis manager found.");
42       return ;
43    }
44
45    // ================== GetInputEventHandler =============================
46    AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
47    
48    //========= Add PID Reponse to ANALYSIS manager ====
49    if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
50       gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
51       AddTaskPIDResponse(isMC);
52    }
53
54    AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
55    if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
56       AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
57       
58       fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
59       fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
60       fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
61
62       if (!mgr) {
63          Error("AddTask_V0ReaderV1", "No analysis manager found.");
64          return;
65       }
66
67       // Set AnalysisCut Number
68       AliConversionCuts *fCuts=NULL;
69       if(V0ReaderCutNumber!=""){
70          fCuts= new AliConversionCuts(V0ReaderCutNumber.Data(),V0ReaderCutNumber.Data());
71          fCuts->SetPreSelectionCutFlag(kTRUE);
72          if(fCuts->InitializeCutsFromCutString(V0ReaderCutNumber.Data())){
73             if (IsHeavyIon==2){
74                fCuts->SelectCollisionCandidates(AliVEvent::kINT7);
75                fCuts->DoEtaShift(doEtaShiftV0Reader);
76             }
77             fV0ReaderV1->SetConversionCuts(fCuts);
78             fCuts->SetFillCutHistograms("",kFALSE);
79          }
80       }
81       
82       
83       if(inputHandler->IsA()==AliAODInputHandler::Class()){
84          // AOD mode
85          fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",V0ReaderCutNumberAODBranch.Data()));
86       }
87       fV0ReaderV1->Init();
88
89       AliLog::SetGlobalLogLevel(AliLog::kInfo);
90
91       //connect input V0Reader
92       mgr->AddTask(fV0ReaderV1);
93       mgr->ConnectInput(fV0ReaderV1,0,cinput);
94
95    } else {
96       Error("AddTask_V0ReaderV1", "Cannot execute AddTask, V0ReaderV1 already exists.");
97    }   
98
99
100    
101
102    // suitable cuts for the photon Task, however in principle every cutnumber can be chosen which is used in the photon analysis:
103    // PbPb:  TaskCutnumber = "5680001060092663044803000000"; TPC mult in MC - 60-80% central
104    //   or:  TaskCutnumber = "1680001060092663044803000000"; V0 mult in MC  - 60-80% central
105    //  pPb:  TaskCutnumber = "8000000090092663743800000000";
106    //   pp:  TaskCutnumber = "0000000090092663743800000000";
107
108     AliConversionCuts *analysisCuts = new AliConversionCuts();
109          analysisCuts->InitializeCutsFromCutString(TaskCutnumber.Data());
110          analysisCuts->SetFillCutHistograms("",kFALSE);
111     
112     AliAnalysisTaskConversionQA *fQA = new AliAnalysisTaskConversionQA(Form("%s_QA",TaskCutnumber.Data()));
113     fQA->SetConversionCuts(analysisCuts,IsHeavyIon);
114     fQA->FillType(kTree,kHistograms);
115     fQA->SetIsMC(IsMC);
116     mgr->AddTask(fQA);
117
118     AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
119     if (runBasicQAWithStandardOutput){
120          AliAnalysisDataContainer *coutput =
121             mgr->CreateContainer(Form("GammaConv_V1QA_%s",TaskCutnumber.Data()), TList::Class(),
122                 AliAnalysisManager::kOutputContainer,Form("%s:GammaConvV1_QA_%s",AliAnalysisManager::GetCommonFileName(), TaskCutnumber.Data()));
123          mgr->ConnectOutput(fQA,  1, coutput);
124     } else {
125          AliAnalysisDataContainer *coutput =
126             mgr->CreateContainer(Form("GammaConv_V1QA_%s",TaskCutnumber.Data()), TList::Class(),
127                  AliAnalysisManager::kOutputContainer,Form("GammaConvV1_QA_%s.root",TaskCutnumber.Data()));
128          mgr->ConnectOutput(fQA,  1, coutput);
129     }
130     mgr->ConnectInput(fQA,0,cinput);
131     
132
133    //connect containers
134    return;
135 }