#include "AliFJWrapper.h"
#include "AliEmcalJet.h"
#include "AliEmcalJetFinder.h"
#include "AliLog.h"
#include <vector>
#include "TH1.h"
AliEmcalJetFinder::AliEmcalJetFinder() :
TNamed("EmcalJetFinder","EmcalJetFinder"), fFastjetWrapper(0), fInputVectorIndex(0), fJetCount(0), fJetArray(), fGhostArea(0.005), fRadius(0.4), fJetAlgorithm(0), fRecombScheme(-1), fTrackMaxEta(0.9), fJetMaxEta(0.5), fJetMinPt(0), fJetMinArea(0)
{
fFastjetWrapper = new AliFJWrapper("FJWrapper", "FJWrapper");
}
AliEmcalJetFinder::AliEmcalJetFinder(const char* name) :
TNamed(name, name), fFastjetWrapper(0), fInputVectorIndex(0), fJetCount(0), fJetArray(), fGhostArea(0.005), fRadius(0.4), fJetAlgorithm(0), fRecombScheme(-1), fTrackMaxEta(0.9), fJetMaxEta(0.5), fJetMinPt(0), fJetMinArea(0)
{
fFastjetWrapper = new AliFJWrapper("FJWrapper", "FJWrapper");
}
AliEmcalJetFinder::~AliEmcalJetFinder()
{
if(fFastjetWrapper)
delete fFastjetWrapper;
}
Bool_t AliEmcalJetFinder::FindJets()
{
for (UInt_t i=0; i<fJetArray.size(); i++) {
delete fJetArray[i];
fJetArray[i] = 0;
}
fJetArray.clear();
fJetCount = 0;
if(!fInputVectorIndex)
{
AliError("No input vectors added to jet finder!");
return kFALSE;
}
fFastjetWrapper->SetAreaType(fastjet::active_area_explicit_ghosts);
fFastjetWrapper->SetGhostArea(fGhostArea);
fFastjetWrapper->SetR(fRadius);
if(fJetAlgorithm == 0)
fFastjetWrapper->SetAlgorithm(fastjet::antikt_algorithm);
if(fJetAlgorithm == 1)
fFastjetWrapper->SetAlgorithm(fastjet::kt_algorithm);
if(fRecombScheme>=0)
fFastjetWrapper->SetRecombScheme(static_cast<fastjet::RecombinationScheme>(fRecombScheme));
fFastjetWrapper->SetMaxRap(fTrackMaxEta);
fFastjetWrapper->Run();
std::vector<fastjet::PseudoJet> fastjets = fFastjetWrapper->GetInclusiveJets();
fJetArray.resize(fastjets.size());
for (UInt_t i=0; i<fastjets.size(); i++)
{
if (fastjets[i].perp()<fJetMinPt)
continue;
if (fFastjetWrapper->GetJetArea(i)<fJetMinArea)
continue;
if (TMath::Abs(fastjets[i].eta())>fJetMaxEta)
continue;
AliEmcalJet* jet = new AliEmcalJet(fastjets[i].perp(), fastjets[i].eta(), fastjets[i].phi(), fastjets[i].m());
Int_t nConstituents(fFastjetWrapper->GetJetConstituents(i).size());
jet->SetArea(fFastjetWrapper->GetJetArea(i));
jet->SetNumberOfTracks(nConstituents);
jet->SetNumberOfClusters(nConstituents);
fJetArray[fJetCount] = jet;
fJetCount++;
}
fJetArray.resize(fJetCount);
fFastjetWrapper->Clear();
fInputVectorIndex = 0;
return kTRUE;
}
void AliEmcalJetFinder::AddInputVector(Double_t px, Double_t py, Double_t pz)
{
fFastjetWrapper->AddInputVector(px, py, pz, TMath::Sqrt(px*px + py*py + pz*pz), fInputVectorIndex + 100);
fInputVectorIndex++;
}
void AliEmcalJetFinder::AddInputVector(Double_t px, Double_t py, Double_t pz, Double_t E)
{
fFastjetWrapper->AddInputVector(px, py, pz, E, fInputVectorIndex + 100);
fInputVectorIndex++;
}
void AliEmcalJetFinder::FillPtHistogram(TH1* histogram)
{
if(!histogram)
return;
for (std::size_t i=0; i<fJetArray.size(); i++)
{
histogram->Fill(fJetArray[i]->Pt());
}
}
void AliEmcalJetFinder::FillPhiHistogram(TH1* histogram)
{
if(!histogram)
return;
for (std::size_t i=0; i<fJetArray.size(); i++)
{
histogram->Fill(fJetArray[i]->Phi());
}
}
void AliEmcalJetFinder::FillEtaHistogram(TH1* histogram)
{
if(!histogram)
return;
for (std::size_t i=0; i<fJetArray.size(); i++)
{
histogram->Fill(fJetArray[i]->Eta());
}
}
AliEmcalJetFinder.cxx:100 AliEmcalJetFinder.cxx:101 AliEmcalJetFinder.cxx:102 AliEmcalJetFinder.cxx:103 AliEmcalJetFinder.cxx:104 AliEmcalJetFinder.cxx:105 AliEmcalJetFinder.cxx:106 AliEmcalJetFinder.cxx:107 AliEmcalJetFinder.cxx:108 AliEmcalJetFinder.cxx:109 AliEmcalJetFinder.cxx:110 AliEmcalJetFinder.cxx:111 AliEmcalJetFinder.cxx:112 AliEmcalJetFinder.cxx:113 AliEmcalJetFinder.cxx:114 AliEmcalJetFinder.cxx:115 AliEmcalJetFinder.cxx:116 AliEmcalJetFinder.cxx:117 AliEmcalJetFinder.cxx:118 AliEmcalJetFinder.cxx:119 AliEmcalJetFinder.cxx:120 AliEmcalJetFinder.cxx:121 AliEmcalJetFinder.cxx:122 AliEmcalJetFinder.cxx:123 AliEmcalJetFinder.cxx:124 AliEmcalJetFinder.cxx:125 AliEmcalJetFinder.cxx:126 AliEmcalJetFinder.cxx:127 AliEmcalJetFinder.cxx:128 AliEmcalJetFinder.cxx:129 AliEmcalJetFinder.cxx:130 AliEmcalJetFinder.cxx:131 AliEmcalJetFinder.cxx:132 AliEmcalJetFinder.cxx:133 AliEmcalJetFinder.cxx:134 AliEmcalJetFinder.cxx:135 AliEmcalJetFinder.cxx:136 AliEmcalJetFinder.cxx:137 AliEmcalJetFinder.cxx:138 AliEmcalJetFinder.cxx:139 AliEmcalJetFinder.cxx:140 AliEmcalJetFinder.cxx:141 AliEmcalJetFinder.cxx:142 AliEmcalJetFinder.cxx:143 AliEmcalJetFinder.cxx:144 AliEmcalJetFinder.cxx:145 AliEmcalJetFinder.cxx:146 AliEmcalJetFinder.cxx:147 AliEmcalJetFinder.cxx:148 AliEmcalJetFinder.cxx:149 AliEmcalJetFinder.cxx:150