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