fHistDeltaPtRC[i] = 0;
fHistDeltaPtRCExLJ[i] = 0;
fHistDeltaPtRCRand[i] = 0;
+ fHistEmbRejectedJetsPhiEta[i] = 0;
+ fHistEmbRejectedJetsPtArea[i] = 0;
fHistEmbNotFoundPt[i] = 0;
fHistEmbNotFoundPhiEta[i] = 0;
fHistEmbJetsPtArea[i] = 0;
fHistDeltaPtRC[i] = 0;
fHistDeltaPtRCExLJ[i] = 0;
fHistDeltaPtRCRand[i] = 0;
+ fHistEmbRejectedJetsPhiEta[i] = 0;
+ fHistEmbRejectedJetsPtArea[i] = 0;
fHistEmbNotFoundPt[i] = 0;
fHistEmbNotFoundPhiEta[i] = 0;
fHistEmbJetsPtArea[i] = 0;
AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
if (!fTracksName.IsNull() || !fCaloName.IsNull()) {
- fHistRCPhiEta = new TH2F("fHistRCPhiEta","fHistRCPhiEta", 50, -1, 1, 101, 0, TMath::Pi() * 2.02);
+ fHistRCPhiEta = new TH2F("fHistRCPhiEta","fHistRCPhiEta", 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
fHistRCPhiEta->GetXaxis()->SetTitle("#eta");
fHistRCPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistRCPhiEta);
}
if (!fEmbJetsName.IsNull()) {
- fHistEmbJetsPhiEta = new TH2F("fHistEmbJetsPhiEta","fHistEmbJetsPhiEta", 50, -1, 1, 101, 0, TMath::Pi() * 2.02);
+ fHistEmbJetsPhiEta = new TH2F("fHistEmbJetsPhiEta","fHistEmbJetsPhiEta", 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
fHistEmbJetsPhiEta->GetXaxis()->SetTitle("#eta");
fHistEmbJetsPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistEmbJetsPhiEta);
- fHistLeadPartPhiEta = new TH2F("fHistLeadPartPhiEta","fHistLeadPartPhiEta", 50, -1, 1, 101, 0, TMath::Pi() * 2.02);
+ fHistLeadPartPhiEta = new TH2F("fHistLeadPartPhiEta","fHistLeadPartPhiEta", 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
fHistLeadPartPhiEta->GetXaxis()->SetTitle("#eta");
fHistLeadPartPhiEta->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistLeadPartPhiEta);
fOutput->Add(fHistDeltaPtRCRand[i]);
}
-
if (!fEmbJetsName.IsNull()) {
histname = "fHistEmbJetsPtArea_";
histname += i;
histname = "fHistEmbNotFoundPhiEta_";
histname += i;
- fHistEmbNotFoundPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 40, -2, 2, 64, 0, 6.4);
+ fHistEmbNotFoundPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
fHistEmbNotFoundPhiEta[i]->GetXaxis()->SetTitle("#eta");
fHistEmbNotFoundPhiEta[i]->GetYaxis()->SetTitle("#phi");
fOutput->Add(fHistEmbNotFoundPhiEta[i]);
fHistEmbNotFoundPt[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistEmbNotFoundPt[i]);
+ histname = "fHistEmbRejectedJetsPhiEta_";
+ histname += i;
+ fHistEmbRejectedJetsPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 100, -1, 1, 201, 0, TMath::Pi() * 2.01);
+ fHistEmbRejectedJetsPhiEta[i]->GetXaxis()->SetTitle("#eta");
+ fHistEmbRejectedJetsPhiEta[i]->GetYaxis()->SetTitle("#phi");
+ fOutput->Add(fHistEmbRejectedJetsPhiEta[i]);
+
+ histname = "fHistEmbRejectedJetsPtArea_";
+ histname += i;
+ fHistEmbRejectedJetsPtArea[i] = new TH2F(histname.Data(), histname.Data(), 40, 0, fJetRadius * fJetRadius * TMath::Pi() * 3, fNbins, fMinBinPt, fMaxBinPt);
+ fHistEmbRejectedJetsPtArea[i]->GetXaxis()->SetTitle("area");
+ fHistEmbRejectedJetsPtArea[i]->GetYaxis()->SetTitle("#it{p}_{T,jet}^{emb,raw} (GeV/#it{c})");
+ fOutput->Add(fHistEmbRejectedJetsPtArea[i]);
+
histname = "fHistEmbBkgArea_";
histname += i;
fHistEmbBkgArea[i] = new TH2F(histname.Data(), histname.Data(), 40, 0, fJetRadius * fJetRadius * TMath::Pi() * 3, fNbins, fMinBinPt, fMaxBinPt);
Int_t countEmbJets = 0;
while (embJet != 0) {
+ if (!AcceptJet(embJet)) {
+ fHistEmbRejectedJetsPhiEta[fCentBin]->Fill(embJet->Eta(), embJet->Phi());
+ fHistEmbRejectedJetsPtArea[fCentBin]->Fill(embJet->Area(), embJet->Pt());
+
+ embJet = NextEmbeddedJet();
+ continue;
+ }
+
AliDebug(2,Form("Elaborating embedded jet n. %d", countEmbJets));
countEmbJets++;
if (jet->MCPt() < fMCJetPtThreshold)
continue;
-
- if (!AcceptJet(jet))
- continue;
-
+
return jet;
}
// Jet embedding
TH2 *fHistEmbNotFoundPhiEta[4]; //!Phi-Eta of "not found" embedded particles
TH1 *fHistEmbNotFoundPt[4]; //!Pt of "not found" embedded particles
+ TH2 *fHistEmbRejectedJetsPhiEta[4];//!Phi-Eta of rejected embedded jets
+ TH1 *fHistEmbRejectedJetsPtArea[4];//!Pt-area of rejected embedded jets
TH3 *fHistEmbJetsPtArea[4]; //!Pt vs. area of embedded jets
TH3 *fHistEmbJetsCorrPtArea[4]; //!Pt-rho*A vs. area of embedded jets
TH2 *fHistEmbPartPtvsJetPt[4]; //!MC jet pt total jet pt
#include <TClonesArray.h>
#include <TH1I.h>
+#include <TMath.h>
#include "AliVCluster.h"
#include "AliVParticle.h"
continue;
Int_t mcLabel = cluster->GetLabel();
if (mcLabel > 0) {
- Int_t index = fMCParticlesMap->GetBinContent(mcLabel);
+ Int_t index = fMCParticlesMap->At(mcLabel);
+ if (index < 0)
+ continue;
AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(index));
if (!part) {
AliError(Form("%s: Could not get MC particle %d", GetName(), index));
}
if (!AcceptTrack(track))
continue;
- Int_t mcLabel = track->GetLabel();
+ Int_t mcLabel = TMath::Abs(track->GetLabel());
if (mcLabel != 0) {
- Int_t index = fMCParticlesMap->GetBinContent(mcLabel);
+ Int_t index = fMCParticlesMap->At(mcLabel);
+ if (index < 0)
+ continue;
AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(index));
if (!part) {
AliError(Form("%s: Could not get MC particle %d", GetName(), index));
continue;
}
+ AliDebug(2, Form("Track %d, pt = %f, eta = %f, phi = %f, label = %d is matched with particle %d, pt = %f, eta = %f, phi = %f",
+ i, track->Pt(), track->Eta(), track->Phi(), mcLabel, index, part->Pt(), part->Eta(), part->Phi()));
UInt_t bits = (UInt_t)part->TestBits(TObject::kBitMask);
track->SetBit(bits);
}
if (cluster)
mcLabel = cluster->GetLabel();
else if (track)
- mcLabel = track->GetLabel();
+ mcLabel = TMath::Abs(track->GetLabel());
if (mcLabel != 0) {
- Int_t index = fMCParticlesMap->GetBinContent(mcLabel);
+ Int_t index = fMCParticlesMap->At(mcLabel);
+ if (index < 0)
+ continue;
AliVParticle *part = static_cast<AliVParticle*>(fMCParticles->At(index));
if (!part) {
AliError(Form("%s: Could not get MC particle %d", GetName(), index));
fTriggerMask(AliVEvent::kAny),
fZVertexCut(10),
fIncludeNoITS(kTRUE),
+ fUseNegativeLabels(kTRUE),
+ fTrackEfficiency(1),
+ fIsMC(kFALSE),
fTotalFiles(2050),
fAttempts(5),
fEsdTreeMode(kFALSE),
fTriggerMask(AliVEvent::kAny),
fZVertexCut(10),
fIncludeNoITS(kTRUE),
+ fUseNegativeLabels(kTRUE),
+ fTrackEfficiency(1),
+ fIsMC(kFALSE),
fTotalFiles(2050),
fAttempts(5),
fEsdTreeMode(kFALSE),
}
}
+ if (fTrackEfficiency < 1) {
+ Double_t r = gRandom->Rndm();
+ if (fTrackEfficiency < r)
+ continue;
+ }
+
Int_t label = 0;
-
- if (fOutMCParticles) {
- label = track->GetLabel();
-
- if (label == 0)
+ if (fIsMC) {
+ if (fUseNegativeLabels)
+ label = track->GetLabel();
+ else
+ label = TMath::Abs(track->GetLabel());
+
+ if (label == 0) {
+ AliWarning(Form("%s: Track %d with label==0", GetName(), i));
label = 99999;
+ }
}
AliDebug(3, Form("Embedding track with pT = %f, eta = %f, phi = %f, label = %d", track->Pt(), track->Eta(), track->Phi(), label));
void SetTriggerMask(UInt_t mask) { fTriggerMask = mask ; }
void SetAODfilterBits(Int_t b0 = 0, Int_t b1 = 0) { fAODfilterBits[0] = b0 ; fAODfilterBits[1] = b1 ; }
void SetIncludeNoITS(Bool_t f) { fIncludeNoITS = f ; }
+ void SetUseNegativeLabels(Bool_t f) { fUseNegativeLabels = f ; }
+ void SetTrackEfficiency(Double_t eff = 0.95) { fTrackEfficiency = eff ; }
void SetTotalFiles(Int_t n) { fTotalFiles = n ; }
void SetAttempts(Int_t n) { fAttempts = n ; }
void SetRandomAccess(Bool_t r=kTRUE) { fRandomAccess = r ; }
+ void SetMC(Bool_t a) { fIsMC = a ; }
protected:
Bool_t ExecOnce() ;// intialize task
Double_t fZVertexCut ;// Z vertex cut
Int_t fAODfilterBits[2] ;// AOD track filter bit map
Bool_t fIncludeNoITS ;// True = includes tracks with failed ITS refit
+ Bool_t fUseNegativeLabels ;// Whether or not should use negative MC labels
+ Double_t fTrackEfficiency ;// Track efficiency
+ Bool_t fIsMC ;// Whether the embedding AOD is MC or not
Int_t fTotalFiles ;// Total number of files per pt hard bin
Int_t fAttempts ;// Attempts to be tried before giving up in opening the next file
Bool_t fEsdTreeMode ;//! True = embed from ESD (must be a skimmed ESD!)
AliJetEmbeddingFromAODTask(const AliJetEmbeddingFromAODTask&); // not implemented
AliJetEmbeddingFromAODTask &operator=(const AliJetEmbeddingFromAODTask&); // not implemented
- ClassDef(AliJetEmbeddingFromAODTask, 4) // Jet embedding from AOD task
+ ClassDef(AliJetEmbeddingFromAODTask, 5) // Jet embedding from AOD task
};
#endif
SetSuffix("PYTHIAEmbedding");
fTotalFiles = 2000;
fRandomAccess = kTRUE;
+ SetMC(kTRUE);
}
//________________________________________________________________________
SetSuffix("PYTHIAEmbedding");
fTotalFiles = 2000;
fRandomAccess = kTRUE;
+ SetMC(kTRUE);
}
//________________________________________________________________________
}
// Reset name (it is cleared each event by the analysis manager)
- if (fMCParticlesMap)
- fMCParticlesMap->SetName(fMCParticlesName + "_Map");
+ if (fOutMCParticlesMap) {
+ new (fOutMCParticlesMap) TH1I(fOutMCParticlesName + "_Map", fOutMCParticlesName + "_Map",9999,0,1);
+ fOutMCParticlesMap->TArrayI::Reset(-1);
+ }
AliVCaloCells *tempCaloCells = 0;
AliAODMCParticle *aodpart = new ((*fOutMCParticles)[nPart]) AliAODMCParticle(*part);
fOutMCParticlesMap->SetBinContent(origIndex + fMCLabelShift, nPart);
+ AliDebug(2, Form("Setting bin %d to %d (fMCLabelShift=%d, origIndex=%d)",
+ origIndex + fMCLabelShift, fOutMCParticlesMap->At(origIndex + fMCLabelShift), fMCLabelShift, origIndex));
return aodpart;
}
if (!fMCParticlesMap)
return;
- Int_t shift = 0;
-
for (Int_t i = 0; i < fMCParticlesMap->GetNbinsX()+2; i++) {
fOutMCParticlesMap->SetBinContent(i, fMCParticlesMap->GetBinContent(i));
if (fMCParticlesMap->GetBinContent(i) != 0)
- shift = i;
+ fMCLabelShift = i;
}
- fMCLabelShift = shift;
+ AliDebug(2,Form("MC particles copied. fMCLabelShift=%d",fMCLabelShift));
}
//________________________________________________________________________
for (Int_t i = 0; i < 4; i++) {
fHistEvents[i] = 0;
- fHistLeadingJetPt[i] = 0;
- fHistLeadingJetCorrPt[i] = 0;
+ fHistLeadingJetPhiEta[i] = 0;
+ fHistLeadingJetPtArea[i] = 0;
+ fHistLeadingJetCorrPtArea[i] = 0;
fHistRhoVSleadJetPt[i] = 0;
fHistJetPhiEta[i] = 0;
fHistJetsPtArea[i] = 0;
for (Int_t i = 0; i < 4; i++) {
fHistEvents[i] = 0;
- fHistLeadingJetPt[i] = 0;
- fHistLeadingJetCorrPt[i] = 0;
+ fHistLeadingJetPhiEta[i] = 0;
+ fHistLeadingJetPtArea[i] = 0;
+ fHistLeadingJetCorrPtArea[i] = 0;
fHistRhoVSleadJetPt[i] = 0;
fHistJetPhiEta[i] = 0;
fHistJetsPtArea[i] = 0;
fHistEvents[i]->GetXaxis()->SetBinLabel(5, "OK");
fOutput->Add(fHistEvents[i]);
- histname = "fHistLeadingJetPt_";
+ histname = "fHistLeadingJetPhiEta_";
histname += i;
- fHistLeadingJetPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt);
- fHistLeadingJetPt[i]->GetXaxis()->SetTitle("p_{T}^{raw} (GeV/c)");
- fHistLeadingJetPt[i]->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistLeadingJetPt[i]);
+ fHistLeadingJetPhiEta[i] = new TH2F(histname.Data(), histname.Data(), 50,-1, 1, 101, 0, TMath::Pi() * 2.02);
+ fHistLeadingJetPhiEta[i]->GetXaxis()->SetTitle("#eta");
+ fHistLeadingJetPhiEta[i]->GetYaxis()->SetTitle("#phi");
+ fOutput->Add(fHistLeadingJetPhiEta[i]);
+
+ histname = "fHistLeadingJetPtArea_";
+ histname += i;
+ fHistLeadingJetPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt, 30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3);
+ fHistLeadingJetPtArea[i]->GetXaxis()->SetTitle("p_{T}^{raw} (GeV/c)");
+ fHistLeadingJetPtArea[i]->GetYaxis()->SetTitle("area");
+ fOutput->Add(fHistLeadingJetPtArea[i]);
if (!fRhoName.IsNull()) {
- histname = "fHistLeadingJetCorrPt_";
+ histname = "fHistLeadingJetCorrPtArea_";
histname += i;
- fHistLeadingJetCorrPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt);
- fHistLeadingJetCorrPt[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
- fHistLeadingJetCorrPt[i]->GetYaxis()->SetTitle("counts");
- fOutput->Add(fHistLeadingJetCorrPt[i]);
+ fHistLeadingJetCorrPtArea[i] = new TH2F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt, 30, 0, fJetRadius * fJetRadius * TMath::Pi() * 3);
+ fHistLeadingJetCorrPtArea[i]->GetXaxis()->SetTitle("p_{T}^{corr} (GeV/c)");
+ fHistLeadingJetCorrPtArea[i]->GetYaxis()->SetTitle("area");
+ fOutput->Add(fHistLeadingJetCorrPtArea[i]);
histname = "fHistRhoVSleadJetPt_";
histname += i;
if (!AcceptJet(jet))
continue;
+ fHistLeadingJetPhiEta[fCentBin]->Fill(jet->Eta(), jet->Phi());
+ fHistLeadingJetPtArea[fCentBin]->Fill(jet->Pt(), jet->Area());
+
Float_t corrPt = jet->Pt() - fRhoVal * jet->Area();
- if (fHistLeadingJetCorrPt[fCentBin])
- fHistLeadingJetCorrPt[fCentBin]->Fill(corrPt);
- fHistLeadingJetPt[fCentBin]->Fill(jet->Pt());
+ if (fHistLeadingJetCorrPtArea[fCentBin])
+ fHistLeadingJetCorrPtArea[fCentBin]->Fill(corrPt, jet->Area());
if (i==0 && fHistRhoVSleadJetPt[fCentBin])
fHistRhoVSleadJetPt[fCentBin]->Fill(fRhoVal, jet->Pt());
// General histograms
TH1F *fHistEvents[4]; //!Events accepted/rejected
- TH1F *fHistLeadingJetPt[4]; //!Leading jet pt spectrum
- TH1F *fHistLeadingJetCorrPt[4]; //!Corrected leading jet pt spectrum
+ TH2F *fHistLeadingJetPhiEta[4]; //!Leading jet phi-eta
+ TH2F *fHistLeadingJetPtArea[4]; //!Leading jet pt spectrum vs. area
+ TH2F *fHistLeadingJetCorrPtArea[4];//!Corrected leading jet pt spectrum vs. area
TH2F *fHistRhoVSleadJetPt[4]; //!Area(leadjet) * rho vs. leading jet pt
TH2F *fNjetsVsCent; //!No. of jets vs. centrality