]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/macros/minijet/AddTaskMinijet.C
output folder configurable
[u/mrichter/AliRoot.git] / PWGCF / Correlations / macros / minijet / AddTaskMinijet.C
1 AliAnalysisTaskMinijet* AddTaskMinijet(Int_t runNumber     =    -1, 
2                                        TString format      = "aod",
3                                        Bool_t  useMC       = false, 
4                                        Bool_t  mcOnly      = false,
5                                        Bool_t  useHighMult = false,
6                                        Float_t ptTrigMin   =   0.7,
7                                        Float_t ptAssocMin  =   0.4,
8                                        Float_t maxVtxZ     =   10.,
9                                        Int_t   filterBit   =    96,
10                                        Int_t   debugLevel  =     0,
11                                        Float_t maxEta      =   0.9,
12                                        Float_t ptMin       =   0.2,
13                                        Float_t ptMax       =  50.0,
14                                        Bool_t  checkSDD    = false,
15                                        Int_t   checkOption =     1,
16                                        Bool_t  onlyPrim    = true,
17                                        Bool_t  corrStrange = true,
18                                        Bool_t  threePart   = false,
19                                        Bool_t  rejectChunk = false,
20                                        Int_t   nTPC        = 5,
21                                        const char *foldername = "MiniJets")
22 {
23   
24   // Get the pointer to the existing analysis manager via the static access method
25   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
26   if (!mgr) mgr = new AliAnalysisManager("Analysis train");
27
28   // Set TPC track cuts (used for ESDs) 
29   AliESDtrackCuts* esdTrackCutsTPC=0x0;
30   if(!format.CompareTo("esd")){
31     esdTrackCutsTPC = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
32     esdTrackCutsTPC->SetMinNClustersTPC(80);
33   }
34
35   // First task for min bias events
36   AliAnalysisTaskMinijet *taskMB = 
37     new AliAnalysisTaskMinijet("AliAnalysisTaskMinijet Min bias");
38   taskMB->SetUseMC(useMC,mcOnly);
39   taskMB->SetTriggerPtCut(ptTrigMin);
40   taskMB->SetAssociatePtCut(ptAssocMin);
41   taskMB->SetMaxEta(maxEta);
42   taskMB->SetPtRange(ptMin, ptMax);
43   taskMB->SetMaxVertexZ(maxVtxZ);
44   taskMB->SetTriggerMask(AliVEvent::kMB);
45   // taskMB->SelectCollisionCandidates(AliVEvent::kMB);//MB  //now inside task
46   taskMB->SetFilterBit(filterBit); // used only in AOD case
47   taskMB->SetCheckSDD(checkSDD, checkOption);
48   taskMB->SetCorrStrangeness(corrStrange);
49   taskMB->SetThreeParticleCorrelation(threePart);
50   taskMB->SetRejectCorrupted(rejectChunk, nTPC);
51   taskMB->SetDebugLevel(debugLevel);
52
53   //use this only for correction map plots -> Split contmaintion and rec efficiency
54   taskMB->SetAnalyseOnlyPrimaries(onlyPrim);
55  
56   if(!format.CompareTo("esd")){
57     taskMB->SetCuts(esdTrackCutsTPC);
58     taskMB->SetModeEsdAod(0); // 0 = reading ESDs
59   }  
60   else if (!format.CompareTo("aod")){
61     // Cuts already applied through esd filter
62     taskMB->SetModeEsdAod(1); // 1 = reading AODs
63   }
64
65   // Second task for high multipliciy events
66   AliAnalysisTaskMinijet *taskHM =0x0;
67   if(useHighMult){
68     taskHM  = new AliAnalysisTaskMinijet("AliAnalysisTaskMinijet HighMult");
69     taskHM->SetUseMC(useMC, mcOnly);
70     taskHM->SetTriggerPtCut(ptTrigMin);
71     taskHM->SetAssociatePtCut(ptAssocMin);
72     taskHM->SetMaxEta(maxEta);
73     taskHM->SetPtRange(ptMin, ptMax);
74     taskHM->SetMaxVertexZ(maxVtxZ);
75     taskHM->SetTriggerMask(AliVEvent::kHighMult);
76     //taskHM->SelectCollisionCandidates(AliVEvent::kHighMult); // now inside task
77     taskHM->SetFilterBit(filterBit); // used only in AOD case
78     taskHM->SetCheckSDD(checkSDD, checkOption);
79     taskHM->SetCorrStrangeness(corrStrange);
80     taskHM->SetThreeParticleCorrelation(threePart);
81     taskHM->SetRejectCorrupted(rejectChunk, nTPC);
82     taskHM->SetDebugLevel(debugLevel);
83
84     if(!format.CompareTo("esd")){
85       taskHM->SetCuts(esdTrackCutsTPC);
86       taskHM->SetModeEsdAod(0); // 0 = reading ESDs
87     }
88     else if (!format.CompareTo("aod")){
89       //cuts already applied through esd filter during writing of AODs
90       taskHM->SetModeEsdAod(1); // 1 = reading AODs
91     }
92     
93   }
94
95   //create output containers 
96   AliAnalysisDataContainer *outputMB  = 0x0;
97   AliAnalysisDataContainer *outputHM = 0x0;
98
99   if(runNumber>0){ 
100     outputMB  =  mgr->CreateContainer(foldername,TList::Class(),
101                                       AliAnalysisManager::kOutputContainer, 
102                                       Form("run%d.root",runNumber));
103     if(useHighMult){
104       outputHM =  mgr->CreateContainer("MiniJets_HighMult",TList::Class(),
105                                        AliAnalysisManager::kOutputContainer, 
106                                        Form("run%d.root",runNumber));
107     }
108   }
109   else{
110     outputMB  = mgr->CreateContainer(foldername,TList::Class(),
111                                      AliAnalysisManager::kOutputContainer, 
112                                      Form("%s:PWG4_MiniJets",
113                                           AliAnalysisManager::GetCommonFileName()));
114     if(useHighMult){
115       outputHM = mgr->CreateContainer("MiniJets_HighMult",TList::Class(),
116                                       AliAnalysisManager::kOutputContainer, 
117                                       Form("%s:PWG4_MiniJets",
118                                            AliAnalysisManager::GetCommonFileName()));
119     }
120   }
121   
122
123   // Add first task to the manager and connect container
124   mgr->AddTask(taskMB);
125   mgr->ConnectInput(taskMB, 0,  mgr->GetCommonInputContainer());
126   mgr->ConnectOutput(taskMB, 1, outputMB);
127   
128   
129   // Add second task to the manager and connect container
130   if(useHighMult){
131     mgr->AddTask(taskHM);
132     mgr->ConnectInput (taskHM, 0,  mgr->GetCommonInputContainer());
133     mgr->ConnectOutput(taskHM, 1, outputHM);
134   }
135   
136   return taskMB;
137
138 }
139