fHistCorrJetsPt[i] = 0;
fHistCorrJetsPtArea[i] = 0;
fHistCorrLeadingJetPt[i] = 0;
+ fHistRCPtRigid[i] = 0;
fHistRCPt[i] = 0;
fHistRCPtExLJ[i] = 0;
fHistRCPtRand[i] = 0;
+ fHistDeltaPtRCRigid[i] = 0;
fHistDeltaPtRC[i] = 0;
fHistDeltaPtRCExLJ[i] = 0;
fHistDeltaPtRCRand[i] = 0;
fHistCorrJetsPt[i] = 0;
fHistCorrJetsPtArea[i] = 0;
fHistCorrLeadingJetPt[i] = 0;
+ fHistRCPtRigid[i] = 0;
fHistRCPt[i] = 0;
fHistRCPtExLJ[i] = 0;
- fHistRCPtRand[i] = 0;
+ fHistRCPtRand[i] = 0;
+ fHistDeltaPtRCRigid[i] = 0;
fHistDeltaPtRC[i] = 0;
fHistDeltaPtRCExLJ[i] = 0;
fHistDeltaPtRCRand[i] = 0;
// Create user output.
AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
-
- const Float_t binWidth = (fMaxBinPt - fMinBinPt) / fNbins;
OpenFile(1);
fOutput = new TList();
fHistCorrLeadingJetPt[i]->GetXaxis()->SetTitle("p_{T}^{RC} [GeV/c]");
fHistCorrLeadingJetPt[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistCorrLeadingJetPt[i]);
-
+
+ histname = "fHistRCPtRigid_";
+ histname += i;
+ fHistRCPtRigid[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt * 2);
+ fHistRCPtRigid[i]->GetXaxis()->SetTitle("rigid cone p_{T} [GeV/c]");
+ fHistRCPtRigid[i]->GetYaxis()->SetTitle("counts");
+ fOutput->Add(fHistRCPtRigid[i]);
+
histname = "fHistRCPt_";
histname += i;
fHistRCPt[i] = new TH1F(histname.Data(), histname.Data(), fNbins, fMinBinPt, fMaxBinPt * 2);
fHistRCPtRand[i]->GetYaxis()->SetTitle("counts");
fOutput->Add(fHistRCPtRand[i]);
+ histname = "fHistDeltaPtRCRigid_";
+ histname += i;
+ fHistDeltaPtRCRigid[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt);
+ fHistDeltaPtRCRigid[i]->GetXaxis()->SetTitle("#deltap_{T}^{RC} [GeV/c]");
+ fHistDeltaPtRCRigid[i]->GetYaxis()->SetTitle("counts");
+ fOutput->Add(fHistDeltaPtRCRigid[i]);
+
histname = "fHistDeltaPtRC_";
histname += i;
fHistDeltaPtRC[i] = new TH1F(histname.Data(), histname.Data(), fNbins * 2, -fMaxBinPt, fMaxBinPt);
const Float_t rcArea = fJetRadius * fJetRadius * TMath::Pi();
const Bool_t IsMCEvent = (Bool_t)(fTracksName.Contains("Randomized") || fTracksName.Contains("Embedded"));
-
+
// Simple random cones
Float_t RCpt = 0;
+ Float_t RCptRigid = 0;
Float_t RCeta = 0;
Float_t RCphi = 0;
- GetRigidCone(RCpt, RCeta, RCphi, IsMCEvent, 0);
+ GetRigidCone(RCpt, RCptRigid, RCeta, RCphi, IsMCEvent, 0);
if (RCpt > 0) {
fHistRCPt[fCentBin]->Fill(RCpt / rcArea);
fHistDeltaPtRC[fCentBin]->Fill(RCpt - rcArea * rho);
}
+ if (RCptRigid > 0) {
+ fHistRCPtRigid[fCentBin]->Fill(RCptRigid / rcArea);
+ fHistDeltaPtRCRigid[fCentBin]->Fill(RCptRigid - rcArea * rho);
+ }
// Random cones far from leading jet
- Float_t RCptExLJ = 0;
- Float_t RCetaExLJ = 0;
- Float_t RCphiExLJ = 0;
- GetRigidCone(RCptExLJ, RCetaExLJ, RCphiExLJ, IsMCEvent, jet);
- if (RCptExLJ > 0) {
- fHistRCPhiEta->Fill(RCetaExLJ, RCphiExLJ);
- fHistRhoVSRCPt->Fill(rho, RCptExLJ / rcArea);
-
- Float_t dphi = RCphiExLJ - jet->Phi();
+ RCpt = 0;
+ RCptRigid = 0;
+ RCeta = 0;
+ RCphi = 0;
+ GetRigidCone(RCpt, RCptRigid, RCeta, RCphi, IsMCEvent, jet);
+ if (RCpt > 0) {
+ fHistRCPhiEta->Fill(RCeta, RCphi);
+ fHistRhoVSRCPt->Fill(rho, RCpt / rcArea);
+
+ Float_t dphi = RCphi - jet->Phi();
if (dphi > 4.8) dphi -= TMath::Pi() * 2;
if (dphi < -1.6) dphi += TMath::Pi() * 2;
- fHistRCPtExLJVSDPhiLJ->Fill(RCptExLJ, dphi);
+ fHistRCPtExLJVSDPhiLJ->Fill(RCpt, dphi);
- fHistRCPtExLJ[fCentBin]->Fill(RCptExLJ / rcArea);
- fHistDeltaPtRCExLJ[fCentBin]->Fill(RCptExLJ - rcArea * rho);
+ fHistRCPtExLJ[fCentBin]->Fill(RCpt / rcArea);
+ fHistDeltaPtRCExLJ[fCentBin]->Fill(RCpt - rcArea * rho);
}
// Random cones with randomized particles
- Float_t RCptRand = 0;
- Float_t RCetaRand = 0;
- Float_t RCphiRand = 0;
- GetRigidCone(RCptRand, RCetaRand, RCphiRand, kTRUE, 0, fRandTracks, fRandCaloClusters);
- if (RCptRand > 0) {
- fHistRCPtRand[fCentBin]->Fill(RCptRand / rcArea);
- fHistDeltaPtRCRand[fCentBin]->Fill(RCptRand - rcArea * rho);
+ RCpt = 0;
+ RCptRigid = 0;
+ RCeta = 0;
+ RCphi = 0;
+ GetRigidCone(RCpt, RCptRigid, RCeta, RCphi, kTRUE, 0, fRandTracks, fRandCaloClusters);
+ if (RCpt > 0) {
+ fHistRCPtRand[fCentBin]->Fill(RCpt / rcArea);
+ fHistDeltaPtRCRand[fCentBin]->Fill(RCpt - rcArea * rho);
}
// ************
}
//________________________________________________________________________
-void AliAnalysisTaskSAJF::GetRigidCone(Float_t &pt, Float_t &eta, Float_t &phi, Bool_t acceptMC,
+void AliAnalysisTaskSAJF::GetRigidCone(Float_t &pt, Float_t &ptrigid, Float_t &eta, Float_t &phi, Bool_t acceptMC,
AliEmcalJet *jet, TClonesArray* tracks, TClonesArray* clusters) const
{
// Get rigid cone.
if (!clusters)
clusters = fCaloClusters;
- if (!tracks && !clusters)
- return;
-
eta = 0;
phi = 0;
pt = 0;
+ ptrigid = 0;
+
+ if (!tracks && !clusters)
+ return;
Float_t LJeta = 999;
Float_t LJphi = 999;
return;
}
+ TVector3 rigidAxis;
+ rigidAxis.SetPtEtaPhi(1, eta, phi);
+ rigidAxis = rigidAxis.Unit();
+
if (fAnaType == kEMCAL && clusters) {
Int_t nclusters = clusters->GetEntriesFast();
for (Int_t iClusters = 0; iClusters < nclusters; iClusters++) {
TLorentzVector nPart;
cluster->GetMomentum(nPart, const_cast<Double_t*>(fVertex));
-
- Float_t pos[3];
- cluster->GetPosition(pos);
- TVector3 clusVec(pos);
-
- Float_t d = TMath::Sqrt((clusVec.Eta() - eta) * (clusVec.Eta() - eta) + (clusVec.Phi() - phi) * (clusVec.Phi() - phi));
-
- if (d <= fJetRadius)
+
+ Float_t d = TMath::Sqrt((nPart.Eta() - eta) * (nPart.Eta() - eta) + (nPart.Phi() - phi) * (nPart.Phi() - phi));
+
+ if (d <= fJetRadius) {
+ TVector3 vect = nPart.Vect();
+ vect *= vect * rigidAxis / vect.Mag();
+ ptrigid += vect.Pt();
+
pt += nPart.Pt();
+ }
}
}
trackphi -= 2 * TMath::Pi();
Float_t d = TMath::Sqrt((tracketa - eta) * (tracketa - eta) + (trackphi - phi) * (trackphi - phi));
- if (d <= fJetRadius)
+ if (d <= fJetRadius){
+ TVector3 vect(track->Px(), track->Py(), track->Pz());
+ vect *= vect * rigidAxis / vect.Mag();
+ ptrigid += vect.Pt();
+
pt += track->Pt();
+ }
}
}
}
//________________________________________________________________________
-void AliAnalysisTaskSAJF::Init()
+void AliAnalysisTaskSAJF::ExecOnce()
{
// Initialize the analysis.
- AliAnalysisTaskEmcalJet::Init();
-
if (!fEmbJetsName.IsNull()) {
if (fEmbTracksName.IsNull()) {
fEmbTracksName = fTracksName;
}
}
+ AliAnalysisTaskEmcalJet::ExecOnce();
+
const Float_t semiDiag = TMath::Sqrt((fMaxPhi - fMinPhi) * (fMaxPhi - fMinPhi) +
(fMaxEta - fMinEta) * (fMaxEta - fMinEta)) / 2;
if (fMinRC2LJ > semiDiag * 0.5) {
void UserCreateOutputObjects();
void Terminate(Option_t *option);
- void Init();
void SetJetMinRC2LJ(Float_t d) { fMinRC2LJ = d ; }
void SetEmbJetsName(const char *n) { fEmbJetsName = n ; }
void SetRhoName(const char *n) { fRhoName = n ; }
protected:
-
+ void ExecOnce() ;
Bool_t RetrieveEventObjects() ;
Bool_t FillHistograms() ;
void GetLeadingJets(Int_t &maxJetIndex, Int_t &max2JetIndex) ;
void DoEmbJetLoop(AliEmcalJet* &embJet, TObject* &embPart) ;
void DoTrackLoop() ;
void DoClusterLoop() ;
- void GetRigidCone(Float_t &pt, Float_t &eta, Float_t &phi, Bool_t acceptMC = kFALSE,
+ void GetRigidCone(Float_t &pt, Float_t &ptrigid, Float_t &eta, Float_t &phi, Bool_t acceptMC = kFALSE,
AliEmcalJet *jet = 0, TClonesArray* tracks = 0, TClonesArray* clusters = 0) const;
Float_t fMinRC2LJ; // Minimum distance random cone to leading jet
// Random cones
TH2F *fHistRCPhiEta; //!Phi-Eta distribution of random cones
+ TH1F *fHistRCPtRigid[4]; //!Random cone pt, rigid
TH1F *fHistRCPt[4]; //!Random cone pt
TH1F *fHistRCPtExLJ[4]; //!Random cone pt, imposing min distance from leading jet
TH1F *fHistRCPtRand[4]; //!Random cone pt, randomized particles
TH2F *fHistRCPtExLJVSDPhiLJ; //!Random cone pt, imposing min distance from leading jet, vs. deltaPhi leading jet
TH2F *fHistRhoVSRCPt; //!Rho vs. Pt(RCExLJ) / Area(RCExLJ)
+ TH1F *fHistDeltaPtRCRigid[4]; //!deltaPt = Pt(RC) - A * rho, rigid
TH1F *fHistDeltaPtRC[4]; //!deltaPt = Pt(RC) - A * rho
TH1F *fHistDeltaPtRCExLJ[4]; //!deltaPt = Pt(RC) - A * rho, imposing min distance from leading jet
TH1F *fHistDeltaPtRCRand[4]; //!deltaPt = Pt(RC) - A * rho, randomzied particles