]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/macros/AddTaskEmcalJet.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / macros / AddTaskEmcalJet.C
1 AliEmcalJetTask* AddTaskEmcalJet(
2   const UInt_t type           = AliEmcalJetTask::kAKT | AliEmcalJetTask::kFullJet | AliEmcalJetTask::kR040Jet,
3   const char *nTracks         = "Tracks",
4   const char *nClusters       = "CaloClusters",
5   const Double_t minTrPt      = 0.15,
6   const Double_t minClPt      = 0.30,
7   const Double_t ghostArea    = 0.005,
8   const Double_t radius       = 0.4,
9   const Int_t recombScheme    = 1,
10   const char *tag             = "Jet",
11   const Double_t minJetPt     = 0.,
12   const Bool_t selectPhysPrim = kFALSE,
13   const Bool_t lockTask       = kTRUE
14 )
15 {  
16   // Get the pointer to the existing analysis manager via the static access method.
17   //==============================================================================
18   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
19   if (!mgr)
20   {
21     ::Error("AddTaskAliEmcalJet", "No analysis manager to connect to.");
22     return NULL;
23   }  
24   
25   // Check the analysis type using the event handlers connected to the analysis manager.
26   //==============================================================================
27   if (!mgr->GetInputEventHandler())
28   {
29     ::Error("AddTaskAliEmcalJet", "This task requires an input event handler");
30     return NULL;
31   }
32   
33   //-------------------------------------------------------
34   // Init the task and do settings
35   //-------------------------------------------------------
36
37   char *algoString;
38   if ((type & AliEmcalJetTask::kKT) != 0) {
39     algoString = "KT";
40     //    minJetPt = 0.1;
41   } else if ((type & AliEmcalJetTask::kAKT) != 0) {
42     algoString = "AKT";
43     //    minJetPt = 1.0;
44   }
45
46   char *typeString;
47   if ((type & AliEmcalJetTask::kFullJet) != 0)
48     typeString = "Full";
49   else if ((type & AliEmcalJetTask::kChargedJet) != 0)
50     typeString = "Charged";
51   else if ((type & AliEmcalJetTask::kNeutralJet) != 0)
52     typeString = "Neutral";
53
54   char radiusString[200];
55   if ((type & AliEmcalJetTask::kR020Jet) != 0)
56     sprintf(radiusString,"R020");
57   else if ((type & AliEmcalJetTask::kR030Jet) != 0)
58     sprintf(radiusString,"R030");
59   else if ((type & AliEmcalJetTask::kR040Jet) != 0)
60     sprintf(radiusString,"R040");
61   else
62     sprintf(radiusString,"R0%2.0f",radius*100.0);
63
64   char pTString[200];
65   if (minTrPt==0)
66     sprintf(pTString,"pT0000");
67   else if (minTrPt<1.0)
68     sprintf(pTString,"pT0%3.0f",minTrPt*1000.0);
69   else if (minTrPt>=1.0)
70     sprintf(pTString,"pT%4.0f",minTrPt*1000.0);
71
72   char ETString[200];
73   if (minClPt==0)
74     sprintf(ETString,"ET0000");
75   else if (minClPt<1.0)
76     sprintf(ETString,"ET0%3.0f",minClPt*1000.0);
77   else if (minClPt>=1.0)
78     sprintf(ETString,"ET%4.0f",minClPt*1000.0);  
79
80   char recombSchemeString[200];
81   if(recombScheme==0)
82     sprintf(recombSchemeString,"%s","E_scheme");
83   else if(recombScheme==1)
84     sprintf(recombSchemeString,"%s","pt_scheme");
85   else if(recombScheme==2)
86     sprintf(recombSchemeString,"%s","pt2_scheme");
87   else if(recombScheme==3)
88     sprintf(recombSchemeString,"%s","Et_scheme");
89   else if(recombScheme==4)
90     sprintf(recombSchemeString,"%s","Et2_scheme");
91   else if(recombScheme==5)
92     sprintf(recombSchemeString,"%s","BIpt_scheme");
93   else if(recombScheme==6)
94     sprintf(recombSchemeString,"%s","BIpt2_scheme");
95   else if(recombScheme==99)
96     sprintf(recombSchemeString,"%s","ext_scheme");
97   else {
98     ::Error("AddTaskAliEmcalJet", "Recombination scheme not recognized.");
99     return NULL;
100   }
101
102   TString name;
103   if (*nTracks && *nClusters)
104     name = TString(Form("%s_%s%s%s_%s_%s_%s_%s_%s",
105                         tag,algoString,typeString,radiusString,nTracks,pTString,nClusters,ETString,recombSchemeString));
106   else if (!*nClusters)
107     name = TString(Form("%s_%s%s%s_%s_%s_%s",
108                         tag,algoString,typeString,radiusString,nTracks,pTString,recombSchemeString));
109   else if (!*nTracks)
110     name = TString(Form("%s_%s%s%s_%s_%s_%s",
111                         tag,algoString,typeString,radiusString,nClusters,ETString,recombSchemeString));
112
113   std::cout << "Jet task name: " << name.Data() << std::endl;
114  
115   AliEmcalJetTask* mgrTask = mgr->GetTask(name.Data());
116   if (mgrTask)
117     return mgrTask;  
118
119   AliEmcalJetTask* jetTask = new AliEmcalJetTask(name);
120   jetTask->SetTracksName(nTracks);
121   jetTask->SetClusName(nClusters);
122   jetTask->SetJetsName(name);
123   jetTask->SetJetType(type);
124   jetTask->SetMinJetTrackPt(minTrPt);
125   jetTask->SetMinJetClusPt(minClPt);
126   jetTask->SetMinJetPt(minJetPt);
127   if ((type & (AliEmcalJetTask::kRX1Jet|AliEmcalJetTask::kRX2Jet|AliEmcalJetTask::kRX3Jet)) != 0)
128     jetTask->SetRadius(radius);
129   jetTask->SetGhostArea(ghostArea);
130   jetTask->SetRecombScheme(recombScheme);
131   jetTask->SelectPhysicalPrimaries(selectPhysPrim);
132   if (lockTask) jetTask->SetLocked();
133
134   //-------------------------------------------------------
135   // Final settings, pass to manager and set the containers
136   //-------------------------------------------------------
137
138   mgr->AddTask(jetTask);
139   
140   // Create containers for input/output
141   AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer()  ;
142   mgr->ConnectInput  (jetTask, 0, cinput);
143
144   return jetTask;
145 }
146
147
148 AliEmcalJetTask* AddTaskEmcalJet(
149   const char *nTracks        = "Tracks",
150   const char *nClusters      = "CaloClusters",
151   const Int_t algo           = 1,
152   const Double_t radius      = 0.4,
153   const Int_t type           = 0,
154   const Double_t minTrPt     = 0.15,
155   const Double_t minClPt     = 0.30,
156   const Double_t ghostArea   = 0.005,
157   const Int_t recombScheme   = 1,
158   const char *tag            = "Jet",
159   const Double_t minJetPt    = 0.,
160   const Bool_t selectPhysPrim = kFALSE,
161   const Bool_t lockTask       = kTRUE
162 )
163 {  
164   UInt_t jetType = 0;
165
166   if (algo == 0) 
167     jetType |= AliEmcalJetTask::kKT; 
168   else 
169     jetType |= AliEmcalJetTask::kAKT;
170
171   if (type==0)
172     jetType |= AliEmcalJetTask::kFullJet; 
173   else if (type==1) 
174     jetType |= AliEmcalJetTask::kChargedJet; 
175   else if (type==2) 
176     jetType |= AliEmcalJetTask::kNeutralJet;
177
178   if (radius==0.2) 
179     jetType |= AliEmcalJetTask::kR020Jet; 
180   else if (radius==0.3) 
181     jetType |= AliEmcalJetTask::kR030Jet;
182   else if (radius==0.4) 
183     jetType |= AliEmcalJetTask::kR040Jet;
184   else
185     jetType |= AliEmcalJetTask::kRX1Jet;
186
187   if (ghostArea<=0) {
188     ::Error("AddTaskEmcalJet","Ghost area set to 0, check your settings (try 0.005)");
189     return NULL;
190   }
191
192   return AddTaskEmcalJet(jetType, nTracks, nClusters, minTrPt, minClPt, ghostArea, radius, recombScheme, tag, minJetPt, selectPhysPrim, lockTask);
193 }