18 #include <TClonesArray.h> 22 #include <AliVEventHandler.h> 23 #include <AliAnalysisManager.h> 72 fHistOccCorrvsCent =
new TH2F(
"fHistOccCorrvsCent",
"fHistOccCorrvsCent;Centrality (%);#it{C}", 100, 0, 100, 2000, 0 , 2);
82 std::pair<AliEmcalJet*, AliEmcalJet*> maxJets = {
nullptr,
nullptr};
87 maxJets.first = *itJet;
90 if (itJet !=
fSortedJets[
"Background"].end()) maxJets.second = *itJet;
117 if (sigJetContIt !=
fJetCollArray.end()) sigJetCont = sigJetContIt->second;
121 for (
auto jet : bkgJetCont->
accepted()) {
123 TotaljetArea += jet->Area();
125 if (jet->IsGhost())
continue;
127 TotaljetAreaPhys += jet->Area();
130 if (jet == maxJets.first || jet == maxJets.second)
continue;
132 Bool_t overlapsWithSignal = kFALSE;
134 for (
auto sigJet : sigJetCont->
accepted()) {
136 overlapsWithSignal = kTRUE;
142 if (overlapsWithSignal)
continue;
144 rhovec[NjetAcc] = jet->Pt() / jet->Area();
149 if (TotaljetArea > 0) {
158 Double_t rho = TMath::Median(NjetAcc, rhovec);
172 if (!r)
return kFALSE;
186 AliError(
"No signal jet collection found. Task will not run!");
208 AliAnalysisTaskRhoDev*
AliAnalysisTaskRhoDev::AddTaskRhoDev(
TString trackName,
Double_t trackPtCut,
TString clusName,
Double_t clusECut,
TString nRho,
Double_t jetradius,
UInt_t acceptance,
AliJetContainer::EJetType_t jetType,
AliJetContainer::ERecoScheme_t rscheme,
Bool_t histo,
TString suffix)
213 ::Error(
"AliAnalysisTaskRhoDev::AddTaskRhoDev",
"No analysis manager to connect to.");
218 AliVEventHandler* handler = mgr->GetInputEventHandler();
220 ::Error(
"AliAnalysisTaskRhoDev::AddTaskRhoDev",
"This task requires an input event handler");
226 if (handler->InheritsFrom(
"AliESDInputHandler")) {
229 else if (handler->InheritsFrom(
"AliAODInputHandler")) {
234 if (trackName ==
"usedefault") {
235 if (dataType ==
kESD) {
236 trackName =
"Tracks";
238 else if (dataType ==
kAOD) {
239 trackName =
"tracks";
246 if (clusName ==
"usedefault") {
247 if (dataType ==
kESD) {
248 clusName =
"CaloClusters";
250 else if (dataType ==
kAOD) {
251 clusName =
"caloClusters";
258 TString name(TString::Format(
"AliAnalysisTaskRhoDev_%s", nRho.Data()));
259 if (!suffix.IsNull()) {
266 ::Warning(
"AliAnalysisTaskRhoDev::AddTaskRhoDev",
"Not adding the task again, since a task with the same name '%s' already exists", name.Data());
274 partCont->SetMinPt(trackPtCut);
287 jetCont->SetName(
"Background");
292 mgr->AddTask(rhotask);
295 mgr->ConnectInput(rhotask, 0, mgr->GetCommonInputContainer());
298 contname +=
"_histos";
299 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
300 TList::Class(), AliAnalysisManager::kOutputContainer,
301 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
302 mgr->ConnectOutput(rhotask, 1, coutput1);
AliClusterContainer * AddClusterContainer(std::string branchName, std::string contName="")
Bool_t AreJetsOverlapping(AliEmcalJet *jet1, AliEmcalJet *jet2)
TList * fOutput
!output list
EDataType_t
Switch for the data type.
Declaration of class AliAnalysisTaskRhoDev.
Double_t fOccupancyFactor
!occupancy correction factor for sparse events
Base class for a task that calculates the UE.
TH2F * fHistOccCorrvsCent
!occupancy correction vs. centrality
Container for particles within the EMCAL framework.
Bool_t fCreateHisto
whether or not create histograms
void SetJetPtCut(Float_t cut)
void SetOutRhoName(const char *name)
static AliAnalysisTaskRhoDev * AddTaskRhoDev(TString nTracks="usedefault", Double_t trackPtCut=0.15, TString nClusters="usedefault", Double_t clusECut=0.30, TString nRho="Rho", Double_t jetradius=0.2, UInt_t acceptance=AliEmcalJet::kTPCfid, AliJetContainer::EJetType_t jetType=AliJetContainer::kChargedJet, AliJetContainer::ERecoScheme_t rscheme=AliJetContainer::pt_scheme, Bool_t histo=kTRUE, TString suffix="")
void UserCreateOutputObjects()
Bool_t fRhoSparse
flag to run CMS method as described in https://arxiv.org/abs/1207.2392
TString fExclJetOverlap
name of the jet collection that should be used to reject jets that are considered "signal" ...
AliParticleContainer * AddParticleContainer(std::string branchName, std::string contName="")
Bool_t VerifyContainers()
Class for a task that calculates the UE.
void SetClusPtCut(Double_t cut)
void AdoptJetContainer(AliJetContainer *cont)
std::map< std::string, AliJetContainer * > fJetCollArray
jet collection array
void SetJetAcceptanceType(UInt_t type)
const AliJetIterableContainer accepted() const
void SetClusECut(Double_t cut)
void SetDefaultClusterEnergy(Int_t d)
Container structure for EMCAL clusters.
AliRhoParameter * fOutRho
!output rho object
Double_t fCent
!event centrality
Container for jet within the EMCAL jet framework.
std::map< std::string, std::list< AliEmcalJet * > > fSortedJets
!jets sorted by momentum
void UserCreateOutputObjects()
void SetClusHadCorrEnergyCut(Double_t cut)
std::pair< AliEmcalJet *, AliEmcalJet * > GetLeadingJets()
UInt_t fNExclLeadJets
number of leading jets to be excluded from the median calculation