#include <Riostream.h>
#include "AliFastJetInput.h"
#include "AliFastJetBkg.h"
#include "AliAODJetEventBackground.h"
#include "AliAODJet.h"
#include "AliSISConeJetFinder.h"
#include "AliSISConeJetHeader.h"
#include "fastjet/AreaDefinition.hh"
#include "fastjet/ClusterSequenceArea.hh"
#include "fastjet/JetDefinition.hh"
#include "fastjet/PseudoJet.hh"
#include "fastjet/config.h"
#if defined(ENABLE_PLUGIN_SISCONE) || defined(FASTJET_ENABLE_PLUGIN_SISCONE)
#include "fastjet/SISConePlugin.hh"
#endif
#include<vector>
using namespace std;
ClassImp(AliSISConeJetFinder)
AliSISConeJetFinder::AliSISConeJetFinder():
AliJetFinder(),
fInputFJ(new AliFastJetInput()),
fJetBkg(new AliFastJetBkg())
{
}
AliSISConeJetFinder::~AliSISConeJetFinder()
{
delete fInputFJ;
delete fJetBkg;
}
void AliSISConeJetFinder::FindJets()
{
AliSISConeJetHeader *header = (AliSISConeJetHeader*)fHeader;
Int_t debug = header->GetDebug();
Bool_t bgMode = header->GetBGMode();
vector<fastjet::PseudoJet> inputParticles=fInputFJ->GetInputParticles();
if(inputParticles.size()==0){
if(debug>0) Printf("%s:%d No input particles found, skipping event",(char*)__FILE__,__LINE__);
return;
}
Double_t coneRadius = header->GetConeRadius();
Double_t overlapThreshold = header->GetOverlapThreshold();
Int_t nPassMax = header->GetNPassMax();
Double_t ptProtoJetMin = header->GetPtProtojetMin();
Double_t caching = header->GetCaching();
double rBkgParam = header->GetRparamBkg();
fastjet::Strategy strategy = header->GetStrategy();
fastjet::RecombinationScheme recombScheme = header->GetRecombScheme();
fastjet::JetDefinition::Plugin * plugin;
plugin = new fastjet::SISConePlugin(coneRadius, overlapThreshold, nPassMax, ptProtoJetMin, caching);
Double_t ghostEtamax = header->GetGhostEtaMax();
Double_t ghostArea = header->GetGhostArea();
Int_t activeAreaRepeats = header->GetActiveAreaRepeats();
Double_t gridScatter = header->GetGridScatter();
Double_t ktScatter = header->GetKtScatter();
Double_t meanGhostKt = header->GetMeanGhostKt();
Double_t areaTypeNumber = header->GetAreaTypeNumber();
fastjet::AreaType areaType = fastjet::active_area;
if (areaTypeNumber == 1) areaType = fastjet::active_area;
if (areaTypeNumber == 2) areaType = fastjet::active_area_explicit_ghosts;
if (areaTypeNumber == 3) areaType = fastjet::one_ghost_passive_area;
if (areaTypeNumber == 4) areaType = fastjet::passive_area;
if (areaTypeNumber == 5) areaType = fastjet::voronoi_area;
fastjet::AreaDefinition areaDef;
if (areaTypeNumber < 5)
{
fastjet::GhostedAreaSpec ghostSpec(ghostEtamax, activeAreaRepeats, ghostArea, gridScatter, ktScatter, meanGhostKt);
areaDef = fastjet::AreaDefinition(areaType,ghostSpec);
}
if (areaTypeNumber == 5)
{
Double_t effectiveRFact = header->GetEffectiveRFact();
fastjet::VoronoiAreaSpec ghostSpec(effectiveRFact);
areaDef = fastjet::AreaDefinition(areaType,ghostSpec);
}
fastjet::ClusterSequenceArea clust_seq(inputParticles, plugin, areaDef);
vector<fastjet::PseudoJet> jets;
if (bgMode == 1)
{
fastjet::JetAlgorithm algorithmBkg = fastjet::kt_algorithm;
Int_t algo = header->GetBGAlgorithm();
if (algo == 0) algorithmBkg = fastjet::kt_algorithm;
if (algo == 1) algorithmBkg = fastjet::cambridge_algorithm;
fastjet::JetDefinition jetDefBkg(algorithmBkg, rBkgParam, recombScheme, strategy);
fastjet::ClusterSequenceArea clust_seq_bkg(inputParticles, jetDefBkg, areaDef);
TString comment = "Running Siscone algorithm with the following setup. ";
comment+= "Jet definition: ";
comment+= "Jet bckg definition: ";
comment+= TString(jetDefBkg.description());
comment+= ". Area definition: ";
comment+= TString(areaDef.description());
comment+= ". Strategy adopted by FastJet and bkg: ";
comment+= TString(clust_seq.strategy_string());
header->SetComment(comment);
if(debug>0){
cout << "--------------------------------------------------------" << endl;
cout << comment << endl;
cout << "--------------------------------------------------------" << endl;
}
Double_t ptMin = header->GetMinJetPt();
vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets();
Double_t rapMin = header->GetRapMin();
Double_t rapMax = header->GetRapMax();
Double_t phiMin = header->GetPhiMin();
Double_t phiMax = header->GetPhiMax();
fastjet::RangeDefinition range(rapMin, rapMax, phiMin, phiMax);
Double_t rho = 0.;
Double_t sigma = 0.;
Double_t meanarea = 0.;
Bool_t kUse4VectorArea = header->Use4VectorArea();
vector<fastjet::PseudoJet> bkgJets = clust_seq_bkg.inclusive_jets();
clust_seq_bkg.get_median_rho_and_sigma(bkgJets,range, kUse4VectorArea, rho, sigma, meanarea, false);
vector<fastjet::PseudoJet> subJets = clust_seq.subtracted_jets(rho,ptMin);
jets = sorted_by_pt(subJets);
}
else
{
TString comment = "Running Siscone algorithm with the following setup. ";
comment+= "Jet definition: ";
comment+= ". Strategy adopted by FastJet: ";
comment+= TString(clust_seq.strategy_string());
header->SetComment(comment);
if(debug>0){
cout << "--------------------------------------------------------" << endl;
cout << comment << endl;
cout << "--------------------------------------------------------" << endl;
}
Double_t ptMin = header->GetMinJetPt();
vector<fastjet::PseudoJet> inclusiveJets = clust_seq.inclusive_jets(ptMin);
jets = sorted_by_pt(inclusiveJets);
}
for (size_t j = 0; j < jets.size(); j++) {
double area = clust_seq.area(jets[j]);
double areaError = clust_seq.area_error(jets[j]);
if(debug>0) printf("Jet found %5d %9.5f %8.5f %10.3f %8.3f +- %6.3f\n", (Int_t)j,jets[j].rap(),jets[j].phi(),jets[j].perp(), area, areaError);
vector<fastjet::PseudoJet> constituents = clust_seq.constituents(jets[j]);
int nCon= constituents.size();
TArrayI ind(nCon);
if ((jets[j].eta() > (header->GetJetEtaMax())) ||
(jets[j].eta() < (header->GetJetEtaMin())) ||
(jets[j].phi() > (header->GetJetPhiMax())) ||
(jets[j].phi() < (header->GetJetPhiMin())) ||
(jets[j].perp() < header->GetMinJetPt())) continue;
AliAODJet aodjet (jets[j].px(), jets[j].py(), jets[j].pz(), jets[j].E());
aodjet.SetEffArea(area,areaError);
if(debug>0) aodjet.Print("");
for (int i=0; i < nCon; i++)
{
fastjet::PseudoJet mPart=constituents[i];
ind[i]=mPart.user_index();
AliJetCalTrkEvent* calEvt = GetCalTrkEvent();
for(Int_t itrack=0; itrack<calEvt->GetNCalTrkTracks(); itrack++)
{
if(itrack==ind[i])
{
TObject *track = calEvt->GetCalTrkTrack(itrack)->GetTrackObject();
aodjet.AddTrack(track);
}
}
}
AddJet(aodjet);
}
delete plugin;
}
void AliSISConeJetFinder::WriteJHeaderToFile() const
{
fHeader->Write();
}
Bool_t AliSISConeJetFinder::ProcessEvent()
{
fInputFJ->SetHeader(fHeader);
fInputFJ->SetCalTrkEvent(GetCalTrkEvent());
fInputFJ->FillInput();
FindJets();
if( fAODEvBkg){
fJetBkg->SetHeader(fHeader);
Double_t sigma1 = 0,meanarea1= 0,sigma2 = 0,meanarea2 = 0;
Double_t bkg1 = 0,bkg2 = 0;
fJetBkg->SetFastJetInput(fInputFJ);
fJetBkg->BkgFastJetb(bkg1,sigma1,meanarea1);
fJetBkg->BkgFastJetWoHardest(bkg2,sigma2,meanarea2);
fAODEvBkg->SetBackground(0,bkg1,sigma1,meanarea1);
fAODEvBkg->SetBackground(1,bkg2,sigma2,meanarea2);
}
Reset();
return kTRUE;
}
AliSISConeJetFinder.cxx:1 AliSISConeJetFinder.cxx:2 AliSISConeJetFinder.cxx:3 AliSISConeJetFinder.cxx:4 AliSISConeJetFinder.cxx:5 AliSISConeJetFinder.cxx:6 AliSISConeJetFinder.cxx:7 AliSISConeJetFinder.cxx:8 AliSISConeJetFinder.cxx:9 AliSISConeJetFinder.cxx:10 AliSISConeJetFinder.cxx:11 AliSISConeJetFinder.cxx:12 AliSISConeJetFinder.cxx:13 AliSISConeJetFinder.cxx:14 AliSISConeJetFinder.cxx:15 AliSISConeJetFinder.cxx:16 AliSISConeJetFinder.cxx:17 AliSISConeJetFinder.cxx:18 AliSISConeJetFinder.cxx:19 AliSISConeJetFinder.cxx:20 AliSISConeJetFinder.cxx:21 AliSISConeJetFinder.cxx:22 AliSISConeJetFinder.cxx:23 AliSISConeJetFinder.cxx:24 AliSISConeJetFinder.cxx:25 AliSISConeJetFinder.cxx:26 AliSISConeJetFinder.cxx:27 AliSISConeJetFinder.cxx:28 AliSISConeJetFinder.cxx:29 AliSISConeJetFinder.cxx:30 AliSISConeJetFinder.cxx:31 AliSISConeJetFinder.cxx:32 AliSISConeJetFinder.cxx:33 AliSISConeJetFinder.cxx:34 AliSISConeJetFinder.cxx:35 AliSISConeJetFinder.cxx:36 AliSISConeJetFinder.cxx:37 AliSISConeJetFinder.cxx:38 AliSISConeJetFinder.cxx:39 AliSISConeJetFinder.cxx:40 AliSISConeJetFinder.cxx:41 AliSISConeJetFinder.cxx:42 AliSISConeJetFinder.cxx:43 AliSISConeJetFinder.cxx:44 AliSISConeJetFinder.cxx:45 AliSISConeJetFinder.cxx:46 AliSISConeJetFinder.cxx:47 AliSISConeJetFinder.cxx:48 AliSISConeJetFinder.cxx:49 AliSISConeJetFinder.cxx:50 AliSISConeJetFinder.cxx:51 AliSISConeJetFinder.cxx:52 AliSISConeJetFinder.cxx:53 AliSISConeJetFinder.cxx:54 AliSISConeJetFinder.cxx:55 AliSISConeJetFinder.cxx:56 AliSISConeJetFinder.cxx:57 AliSISConeJetFinder.cxx:58 AliSISConeJetFinder.cxx:59 AliSISConeJetFinder.cxx:60 AliSISConeJetFinder.cxx:61 AliSISConeJetFinder.cxx:62 AliSISConeJetFinder.cxx:63 AliSISConeJetFinder.cxx:64 AliSISConeJetFinder.cxx:65 AliSISConeJetFinder.cxx:66 AliSISConeJetFinder.cxx:67 AliSISConeJetFinder.cxx:68 AliSISConeJetFinder.cxx:69 AliSISConeJetFinder.cxx:70 AliSISConeJetFinder.cxx:71 AliSISConeJetFinder.cxx:72 AliSISConeJetFinder.cxx:73 AliSISConeJetFinder.cxx:74 AliSISConeJetFinder.cxx:75 AliSISConeJetFinder.cxx:76 AliSISConeJetFinder.cxx:77 AliSISConeJetFinder.cxx:78 AliSISConeJetFinder.cxx:79 AliSISConeJetFinder.cxx:80 AliSISConeJetFinder.cxx:81 AliSISConeJetFinder.cxx:82 AliSISConeJetFinder.cxx:83 AliSISConeJetFinder.cxx:84 AliSISConeJetFinder.cxx:85 AliSISConeJetFinder.cxx:86 AliSISConeJetFinder.cxx:87 AliSISConeJetFinder.cxx:88 AliSISConeJetFinder.cxx:89 AliSISConeJetFinder.cxx:90 AliSISConeJetFinder.cxx:91 AliSISConeJetFinder.cxx:92 AliSISConeJetFinder.cxx:93 AliSISConeJetFinder.cxx:94 AliSISConeJetFinder.cxx:95 AliSISConeJetFinder.cxx:96 AliSISConeJetFinder.cxx:97 AliSISConeJetFinder.cxx:98 AliSISConeJetFinder.cxx:99 AliSISConeJetFinder.cxx:100 AliSISConeJetFinder.cxx:101 AliSISConeJetFinder.cxx:102 AliSISConeJetFinder.cxx:103 AliSISConeJetFinder.cxx:104 AliSISConeJetFinder.cxx:105 AliSISConeJetFinder.cxx:106 AliSISConeJetFinder.cxx:107 AliSISConeJetFinder.cxx:108 AliSISConeJetFinder.cxx:109 AliSISConeJetFinder.cxx:110 AliSISConeJetFinder.cxx:111 AliSISConeJetFinder.cxx:112 AliSISConeJetFinder.cxx:113 AliSISConeJetFinder.cxx:114 AliSISConeJetFinder.cxx:115 AliSISConeJetFinder.cxx:116 AliSISConeJetFinder.cxx:117 AliSISConeJetFinder.cxx:118 AliSISConeJetFinder.cxx:119 AliSISConeJetFinder.cxx:120 AliSISConeJetFinder.cxx:121 AliSISConeJetFinder.cxx:122 AliSISConeJetFinder.cxx:123 AliSISConeJetFinder.cxx:124 AliSISConeJetFinder.cxx:125 AliSISConeJetFinder.cxx:126 AliSISConeJetFinder.cxx:127 AliSISConeJetFinder.cxx:128 AliSISConeJetFinder.cxx:129 AliSISConeJetFinder.cxx:130 AliSISConeJetFinder.cxx:131 AliSISConeJetFinder.cxx:132 AliSISConeJetFinder.cxx:133 AliSISConeJetFinder.cxx:134 AliSISConeJetFinder.cxx:135 AliSISConeJetFinder.cxx:136 AliSISConeJetFinder.cxx:137 AliSISConeJetFinder.cxx:138 AliSISConeJetFinder.cxx:139 AliSISConeJetFinder.cxx:140 AliSISConeJetFinder.cxx:141 AliSISConeJetFinder.cxx:142 AliSISConeJetFinder.cxx:143 AliSISConeJetFinder.cxx:144 AliSISConeJetFinder.cxx:145 AliSISConeJetFinder.cxx:146 AliSISConeJetFinder.cxx:147 AliSISConeJetFinder.cxx:148 AliSISConeJetFinder.cxx:149 AliSISConeJetFinder.cxx:150 AliSISConeJetFinder.cxx:151 AliSISConeJetFinder.cxx:152 AliSISConeJetFinder.cxx:153 AliSISConeJetFinder.cxx:154 AliSISConeJetFinder.cxx:155 AliSISConeJetFinder.cxx:156 AliSISConeJetFinder.cxx:157 AliSISConeJetFinder.cxx:158 AliSISConeJetFinder.cxx:159 AliSISConeJetFinder.cxx:160 AliSISConeJetFinder.cxx:161 AliSISConeJetFinder.cxx:162 AliSISConeJetFinder.cxx:163 AliSISConeJetFinder.cxx:164 AliSISConeJetFinder.cxx:165 AliSISConeJetFinder.cxx:166 AliSISConeJetFinder.cxx:167 AliSISConeJetFinder.cxx:168 AliSISConeJetFinder.cxx:169 AliSISConeJetFinder.cxx:170 AliSISConeJetFinder.cxx:171 AliSISConeJetFinder.cxx:172 AliSISConeJetFinder.cxx:173 AliSISConeJetFinder.cxx:174 AliSISConeJetFinder.cxx:175 AliSISConeJetFinder.cxx:176 AliSISConeJetFinder.cxx:177 AliSISConeJetFinder.cxx:178 AliSISConeJetFinder.cxx:179 AliSISConeJetFinder.cxx:180 AliSISConeJetFinder.cxx:181 AliSISConeJetFinder.cxx:182 AliSISConeJetFinder.cxx:183 AliSISConeJetFinder.cxx:184 AliSISConeJetFinder.cxx:185 AliSISConeJetFinder.cxx:186 AliSISConeJetFinder.cxx:187 AliSISConeJetFinder.cxx:188 AliSISConeJetFinder.cxx:189 AliSISConeJetFinder.cxx:190 AliSISConeJetFinder.cxx:191 AliSISConeJetFinder.cxx:192 AliSISConeJetFinder.cxx:193 AliSISConeJetFinder.cxx:194 AliSISConeJetFinder.cxx:195 AliSISConeJetFinder.cxx:196 AliSISConeJetFinder.cxx:197 AliSISConeJetFinder.cxx:198 AliSISConeJetFinder.cxx:199 AliSISConeJetFinder.cxx:200 AliSISConeJetFinder.cxx:201 AliSISConeJetFinder.cxx:202 AliSISConeJetFinder.cxx:203 AliSISConeJetFinder.cxx:204 AliSISConeJetFinder.cxx:205 AliSISConeJetFinder.cxx:206 AliSISConeJetFinder.cxx:207 AliSISConeJetFinder.cxx:208 AliSISConeJetFinder.cxx:209 AliSISConeJetFinder.cxx:210 AliSISConeJetFinder.cxx:211 AliSISConeJetFinder.cxx:212 AliSISConeJetFinder.cxx:213 AliSISConeJetFinder.cxx:214 AliSISConeJetFinder.cxx:215 AliSISConeJetFinder.cxx:216 AliSISConeJetFinder.cxx:217 AliSISConeJetFinder.cxx:218 AliSISConeJetFinder.cxx:219 AliSISConeJetFinder.cxx:220 AliSISConeJetFinder.cxx:221 AliSISConeJetFinder.cxx:222 AliSISConeJetFinder.cxx:223 AliSISConeJetFinder.cxx:224 AliSISConeJetFinder.cxx:225 AliSISConeJetFinder.cxx:226 AliSISConeJetFinder.cxx:227 AliSISConeJetFinder.cxx:228 AliSISConeJetFinder.cxx:229 AliSISConeJetFinder.cxx:230 AliSISConeJetFinder.cxx:231 AliSISConeJetFinder.cxx:232 AliSISConeJetFinder.cxx:233 AliSISConeJetFinder.cxx:234 AliSISConeJetFinder.cxx:235 AliSISConeJetFinder.cxx:236 AliSISConeJetFinder.cxx:237 AliSISConeJetFinder.cxx:238 AliSISConeJetFinder.cxx:239 AliSISConeJetFinder.cxx:240 AliSISConeJetFinder.cxx:241 AliSISConeJetFinder.cxx:242 AliSISConeJetFinder.cxx:243 AliSISConeJetFinder.cxx:244 AliSISConeJetFinder.cxx:245 AliSISConeJetFinder.cxx:246 AliSISConeJetFinder.cxx:247 AliSISConeJetFinder.cxx:248 AliSISConeJetFinder.cxx:249 AliSISConeJetFinder.cxx:250 AliSISConeJetFinder.cxx:251 AliSISConeJetFinder.cxx:252 AliSISConeJetFinder.cxx:253 AliSISConeJetFinder.cxx:254 AliSISConeJetFinder.cxx:255 AliSISConeJetFinder.cxx:256 AliSISConeJetFinder.cxx:257 AliSISConeJetFinder.cxx:258 AliSISConeJetFinder.cxx:259 AliSISConeJetFinder.cxx:260 AliSISConeJetFinder.cxx:261 AliSISConeJetFinder.cxx:262 AliSISConeJetFinder.cxx:263 AliSISConeJetFinder.cxx:264 AliSISConeJetFinder.cxx:265 AliSISConeJetFinder.cxx:266 AliSISConeJetFinder.cxx:267 AliSISConeJetFinder.cxx:268 AliSISConeJetFinder.cxx:269 AliSISConeJetFinder.cxx:270 AliSISConeJetFinder.cxx:271 AliSISConeJetFinder.cxx:272 AliSISConeJetFinder.cxx:273 AliSISConeJetFinder.cxx:274 AliSISConeJetFinder.cxx:275 AliSISConeJetFinder.cxx:276 AliSISConeJetFinder.cxx:277 AliSISConeJetFinder.cxx:278 AliSISConeJetFinder.cxx:279 AliSISConeJetFinder.cxx:280 AliSISConeJetFinder.cxx:281 AliSISConeJetFinder.cxx:282 AliSISConeJetFinder.cxx:283 AliSISConeJetFinder.cxx:284 AliSISConeJetFinder.cxx:285 AliSISConeJetFinder.cxx:286 AliSISConeJetFinder.cxx:287 AliSISConeJetFinder.cxx:288 AliSISConeJetFinder.cxx:289 AliSISConeJetFinder.cxx:290 AliSISConeJetFinder.cxx:291 AliSISConeJetFinder.cxx:292 AliSISConeJetFinder.cxx:293 AliSISConeJetFinder.cxx:294 AliSISConeJetFinder.cxx:295 AliSISConeJetFinder.cxx:296 AliSISConeJetFinder.cxx:297 AliSISConeJetFinder.cxx:298 AliSISConeJetFinder.cxx:299 AliSISConeJetFinder.cxx:300 AliSISConeJetFinder.cxx:301 AliSISConeJetFinder.cxx:302 AliSISConeJetFinder.cxx:303 AliSISConeJetFinder.cxx:304 AliSISConeJetFinder.cxx:305 AliSISConeJetFinder.cxx:306 AliSISConeJetFinder.cxx:307 AliSISConeJetFinder.cxx:308 AliSISConeJetFinder.cxx:309 AliSISConeJetFinder.cxx:310 AliSISConeJetFinder.cxx:311 AliSISConeJetFinder.cxx:312 AliSISConeJetFinder.cxx:313 AliSISConeJetFinder.cxx:314