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
16 // Get the pointer to the existing analysis manager via the static access method.
17 //==============================================================================
18 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
21 ::Error("AddTaskAliEmcalJet", "No analysis manager to connect to.");
25 // Check the analysis type using the event handlers connected to the analysis manager.
26 //==============================================================================
27 if (!mgr->GetInputEventHandler())
29 ::Error("AddTaskAliEmcalJet", "This task requires an input event handler");
33 //-------------------------------------------------------
34 // Init the task and do settings
35 //-------------------------------------------------------
38 if ((type & AliEmcalJetTask::kKT) != 0) {
41 } else if ((type & AliEmcalJetTask::kAKT) != 0) {
47 if ((type & AliEmcalJetTask::kFullJet) != 0)
49 else if ((type & AliEmcalJetTask::kChargedJet) != 0)
50 typeString = "Charged";
51 else if ((type & AliEmcalJetTask::kNeutralJet) != 0)
52 typeString = "Neutral";
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");
62 sprintf(radiusString,"R0%2.0f",radius*100.0);
66 sprintf(pTString,"pT0000");
68 sprintf(pTString,"pT0%3.0f",minTrPt*1000.0);
69 else if (minTrPt>=1.0)
70 sprintf(pTString,"pT%4.0f",minTrPt*1000.0);
74 sprintf(ETString,"ET0000");
76 sprintf(ETString,"ET0%3.0f",minClPt*1000.0);
77 else if (minClPt>=1.0)
78 sprintf(ETString,"ET%4.0f",minClPt*1000.0);
80 char recombSchemeString[200];
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");
98 ::Error("AddTaskAliEmcalJet", "Recombination scheme not recognized.");
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));
110 name = TString(Form("%s_%s%s%s_%s_%s_%s",
111 tag,algoString,typeString,radiusString,nClusters,ETString,recombSchemeString));
113 std::cout << "Jet task name: " << name.Data() << std::endl;
115 AliEmcalJetTask* mgrTask = mgr->GetTask(name.Data());
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();
134 //-------------------------------------------------------
135 // Final settings, pass to manager and set the containers
136 //-------------------------------------------------------
138 mgr->AddTask(jetTask);
140 // Create containers for input/output
141 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer() ;
142 mgr->ConnectInput (jetTask, 0, cinput);
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
167 jetType |= AliEmcalJetTask::kKT;
169 jetType |= AliEmcalJetTask::kAKT;
172 jetType |= AliEmcalJetTask::kFullJet;
174 jetType |= AliEmcalJetTask::kChargedJet;
176 jetType |= AliEmcalJetTask::kNeutralJet;
179 jetType |= AliEmcalJetTask::kR020Jet;
180 else if (radius==0.3)
181 jetType |= AliEmcalJetTask::kR030Jet;
182 else if (radius==0.4)
183 jetType |= AliEmcalJetTask::kR040Jet;
185 jetType |= AliEmcalJetTask::kRX1Jet;
188 ::Error("AddTaskEmcalJet","Ghost area set to 0, check your settings (try 0.005)");
192 return AddTaskEmcalJet(jetType, nTracks, nClusters, minTrPt, minClPt, ghostArea, radius, recombScheme, tag, minJetPt, selectPhysPrim, lockTask);