if (dummy->DeltaR(*cluster_vec)<fJetR)
{
clus_mult++;
- E_caloclusters_total+=vcluster->E();
+ E_caloclusters_total+=cluster_vec->Pt();
}
}
fEMCalRCBckgFlucSignal[j]=E_tracks_total+E_caloclusters_total;
if (dummy->DeltaR(*cluster_vec)<fJetR)
{
clus_mult++;
- E_caloclusters_total+=vcluster->E();
+ E_caloclusters_total+=cluster_vec->Pt();
}
}
fEMCalRCBckgFluc[j]=E_tracks_total+E_caloclusters_total;
fRhoChargedScale->FillDeltaPtNColl(fEventCentrality,TPC_rho,fJetR,fEMCalRCBckgFlucNColl,1);
fRhoChargedScale->FillBackgroundFluctuations(fEventCentrality,TPC_rho,fJetR);
fRhoChargedScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),TPC_rho);
- fRhoChargedScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters);
+ fRhoChargedScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters,fVertex);
}
fRhoChargedCMSScale->FillBackgroundFluctuations(fEventCentrality,kTRho,fJetR);
fRhoChargedCMSScale->FillLeadingJetPtRho(fEMCalFullJet->GetLeadingPt(),kTRho);
fRhoChargedCMSScale->DoNEFAnalysis(fNEFSignalJetCut,fEMCalJetThreshold,fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fmyClusters,fOrgClusters,fEvent,fEMCALGeometry,fRecoUtil,fCells);
- fRhoChargedCMSScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters);
+ fRhoChargedCMSScale->FillMiscJetStats(fmyAKTFullJets,fEMCalFullJet->GetJets(),fEMCalFullJet->GetTotalJets(),fOrgTracks,fOrgClusters,fVertex);
delete [] RhoArray;
delete [] pTArray;
vcluster->GetMomentum(*cluster_vec,fVertex);
if (temp_jet->DeltaR(*cluster_vec)>fJetRForRho)
{
- E_caloclusters_total+=vcluster->E();
+ E_caloclusters_total+=cluster_vec->Pt();
}
}
// Calculate the mean Background density
for (i=0;i<fnClusters;i++)
{
AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
- E_caloclusters_total+=vcluster->E();
+ vcluster->GetMomentum(*cluster_vec,fVertex);
+ E_caloclusters_total+=cluster_vec->Pt();
}
// Calculate the mean Background density
EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
vcluster->GetMomentum(*cluster_vec,fVertex);
if ((temp_jet1->DeltaR(*cluster_vec)>fJetRForRho) && (temp_jet2->DeltaR(*cluster_vec)>fJetRForRho))
{
- E_caloclusters_total+=vcluster->E();
+ E_caloclusters_total+=cluster_vec->Pt();
}
}
vcluster->GetMomentum(*cluster_vec,fVertex);
if (temp_jet1->DeltaR(*cluster_vec)>fJetRForRho)
{
- E_caloclusters_total+=vcluster->E();
+ E_caloclusters_total+=cluster_vec->Pt();
}
}
// Calculate the mean Background density
for (i=0;i<fnClusters;i++)
{
AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
- E_caloclusters_total+=vcluster->E();
+ vcluster->GetMomentum(*cluster_vec,fVertex);
+ E_caloclusters_total+=cluster_vec->Pt();
}
// Calculate the mean Background density
EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
for (i=0;i<fnClusters;i++)
{
AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
+ vcluster->GetMomentum(*cluster_vec,fVertex);
if (fEMCalPartJet->GetTotalSignalJets()<1)
{
- E_caloclusters_total+=vcluster->E();
+ E_caloclusters_total+=cluster_vec->Pt();
}
else
{
cluster_away_from_jet=kTRUE;
j=0;
- vcluster->GetMomentum(*cluster_vec,fVertex);
while (cluster_away_from_jet==kTRUE && j<fEMCalPartJetUnbiased->GetTotalSignalJets())
{
AliEmcalJet *myJet =(AliEmcalJet*) fmyAKTFullJets->At(fEMCalPartJetUnbiased->GetSignalJetIndex(j));
}
if (cluster_away_from_jet==kTRUE)
{
- E_caloclusters_total+=vcluster->E();
+ E_caloclusters_total+=cluster_vec->Pt();
}
}
}
Double_t E_caloclusters_total=0.0;
Double_t EMCal_rho=0.0;
+ TLorentzVector *cluster_vec = new TLorentzVector;
+
// Loop over all tracks
for (i=0;i<fnTracks;i++)
{
for (i=0;i<fnClusters;i++)
{
AliVCluster* vcluster = (AliVCluster*) fmyClusters->At(i);
- E_caloclusters_total+=vcluster->E();
+ vcluster->GetMomentum(*cluster_vec,fVertex);
+ E_caloclusters_total+=cluster_vec->Pt();
}
+ delete cluster_vec;
+
// Calculate the mean Background density
EMCal_rho=(E_tracks_total+E_caloclusters_total)/fEMCalArea;
delta_R=jet_vec->DeltaR(*cluster_vec);
if (delta_R<fFullEDJetR)
{
- ED_pT[TMath::FloorNint((delta_R/fFullEDJetR)*fullEDBins)]+=vcluster->E();
+ ED_pT[TMath::FloorNint((delta_R/fFullEDJetR)*fullEDBins)]+=cluster_vec->Pt();
}
}
ED_pT[TMath::FloorNint((delta_R/fChargedEDJetR)*chargedEDBins)]+=vtrack->Pt();
}
}
-
for (j=0;j<chargedEDBins;j++)
{
ED_pT[j] /= TMath::Pi()*dR*dR*(2*j+1);
fhJetConstituentCounts(0),
fhJetTracksCounts(0),
fhJetClustersCounts(0),
+ fhJetPtZTrack(0),
+ fhJetPtZCluster(0),
fNEFOutput(0),
fhJetNEFInfo(0),
fhJetConstituentCounts(0),
fhJetTracksCounts(0),
fhJetClustersCounts(0),
+ fhJetPtZTrack(0),
+ fhJetPtZCluster(0),
fNEFOutput(0),
fhJetNEFInfo(0),
fhJetConstituentCounts(0),
fhJetTracksCounts(0),
fhJetClustersCounts(0),
+ fhJetPtZTrack(0),
+ fhJetPtZCluster(0),
fNEFOutput(0),
fhJetNEFInfo(0),
fhJetClustersCounts->GetZaxis()->SetTitle("1/N_{Events} dN/dp_{T,jet}dN_{cluster}");
fhJetClustersCounts->Sumw2();
+ // Jet pT vs z_{track/cluster}
+ fhJetPtZTrack = new TH2F("fhJetPtZTrack","Jet z_{track} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
+ fhJetPtZTrack->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
+ fhJetPtZTrack->GetYaxis()->SetTitle("z_{track}");
+ fhJetPtZTrack->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{track}");
+ fhJetPtZTrack->Sumw2();
+
+ fhJetPtZCluster = new TH2F("fhJetPtZCluster","Jet z_{cluster} distribution",fPtBins,fPtLow,fPtUp,TCBins,0,1.0);
+ fhJetPtZCluster->GetXaxis()->SetTitle("Jet p_{T} (GeV/c)");
+ fhJetPtZCluster->GetYaxis()->SetTitle("z_{cluster}");
+ fhJetPtZCluster->GetZaxis()->SetTitle("1/N_{Events} dN_{jet}/dp_{T,jet}dz_{cluster}");
+ fhJetPtZCluster->Sumw2();
+
// Neutral Energy Fraction Histograms & QA
if (fDoNEFQAPlots==kTRUE)
{
fNEFOutput->SetOwner();
fNEFOutput->SetName("ListNEFQAPlots");
- SetNEFJetDimensions(9); // Order: nef,Jet Pt,Eta,Phi,Centrality,Constituent mult,Charged mult, Neutral mult, z_leading
+ SetNEFJetDimensions(10); // Order: nef,Jet Pt,Eta,Phi,Centrality,Constituent mult,Charged mult, Neutral mult, z_leading
SetNEFClusterDimensions(11); // Order: nef,Jet Pt,Eta,Phi,Centrality,F_Cross,z_leading,t_cell,deltat_cell,Cell Count, E_Cluster
Int_t dimJetBins[fnDimJet];
dimJetUp[i] = (Double_t)TCBins;
}
+ // z_leading^track
+ dimJetBins[9] = TCBins;
+ dimJetLow[9] = 0.0;
+ dimJetUp[9] = 1.0;
+
// Cluster E
dimClusterBins[6] = fPtBins;
dimClusterLow[6] = fPtLow;
fOutput->Add(fhJetConstituentCounts);
fOutput->Add(fhJetTracksCounts);
fOutput->Add(fhJetClustersCounts);
+ fOutput->Add(fhJetPtZTrack);
+ fOutput->Add(fhJetPtZCluster);
}
void AliAnalysisTaskFullpAJets::AlipAJetHistos::SetName(const char *name)
Bool_t shared = kFALSE;
Double_t zLeading=0.0;
+ Double_t zLeadingTrack=0.0;
Double_t ECluster=0.0;
Double_t eSeed=0.0;
Double_t tCell=0.0;
chargedMult = myJet->GetNumberOfTracks();
neutralMult=myJet->GetNumberOfClusters();
zLeading=myJet->MaxPartPt()/myJet->Pt();
+ zLeading=myJet->MaxTrackPt()/myJet->Pt();
valJet[0] = valCluster[0] = nef;
valJet[1] = valCluster[1] = jetPt;
valJet[2] = valCluster[2] = eta;
valJet[3] = valCluster[3] = phi;
valJet[5] = valCluster[5] = zLeading;
+ valJet[9] = zLeadingTrack;
valJet[6] = totalMult;
valJet[7] = chargedMult;
}
}
-void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillMiscJetStats(TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TClonesArray *trackList, TClonesArray *clusterList)
+void AliAnalysisTaskFullpAJets::AlipAJetHistos::FillMiscJetStats(TClonesArray *jetList, Int_t *indexJetList, Int_t nIndexJetList, TClonesArray *trackList, TClonesArray *clusterList, Double_t *vertex)
{
Int_t i,j;
-
+
+ TLorentzVector *cluster_vec = new TLorentzVector;
for (i=0;i<nIndexJetList;i++)
{
AliEmcalJet *myJet = (AliEmcalJet*) jetList->At(indexJetList[i]);
AliVTrack *vtrack = (AliVTrack*) myJet->TrackAt(j,trackList);
fhJetConstituentPt->Fill(myJet->Pt(),vtrack->Pt());
fhJetTracksPt->Fill(myJet->Pt(),vtrack->Pt());
+ fhJetPtZTrack->Fill(myJet->Pt(),vtrack->Pt()/myJet->Pt());
}
for (j=0;j<myJet->GetNumberOfClusters();j++)
{
AliVCluster *vcluster = (AliVCluster*) myJet->ClusterAt(j,clusterList);
+ vcluster->GetMomentum(*cluster_vec,vertex);
fhJetConstituentPt->Fill(myJet->Pt(),vcluster->E());
fhJetClustersPt->Fill(myJet->Pt(),vcluster->E());
+ fhJetPtZCluster->Fill(myJet->Pt(),cluster_vec->Pt()/myJet->Pt());
}
}
+ delete cluster_vec;
}
TList* AliAnalysisTaskFullpAJets::AlipAJetHistos::GetOutputHistos()
AliAnalysisTaskSE* AddTaskJetMultiPreparation(
- const char* dataType = "AOD",
const char* periodstr = "LHC13b",
TString usedTracks = "PicoTracks",
const char* usedMCParticles = "MCParticlesSelected",
const Bool_t trackclus = kTRUE,
const Bool_t doHistos = kFALSE,
const Bool_t makePicoTracks = kTRUE,
- const Bool_t makeTrigger = kTRUE,
+ const Bool_t makeTrigger = kFALSE,
const Bool_t isEmcalTrain = kFALSE,
const Double_t trackEff = 1.0,
const Bool_t doAODTrackProp = kFALSE
return 0;
}
+ AliVEventHandler *evhand = mgr->GetInputEventHandler();
+ if (!evhand)
+ {
+ Error("AddTaskJetPreparation", "This task requires an input event handler");
+ return NULL;
+ }
+
// Convert hadCorr & trackEff to TStrings to be used in naming conventions
TString sTrackEff = "";
TString sHadCorr = "";
// Establish names for output collections and tasks
TString sPicoTracks = usedTracks + "_" + sTrackEff;
+ TString sEmcalTriggers = "EmcalTriggers_" + sTrackEff;
TString sEmcalTracks = "EmcalTracks_" + sTrackEff;
TString sEmcalClusters = "EmcalClusters_" + sTrackEff;
- TString sEmcalTriggers = "EmcalTriggers_" + sTrackEff;
TString sCaloClustersCorr = outClusName + "_" + sTrackEff + "_" + sHadCorr;
TString sESDTrackFilterName = "AliEmcalEsdTrackFilterTask";
TString period(periodstr);
TString clusterColName(usedClusters);
TString particleColName(usedMCParticles);
- TString dType(dataType);
+ TString dType("ESD");
+
+ if (!evhand->InheritsFrom("AliESDInputHandler"))
+ {
+ dType = "AOD";
+ }
if ((dType == "AOD") && (clusterColName == "CaloClusters"))
{
clusterColName = "CaloClusters";
}
+ if (0)
+ {
+ gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTrackPropagator.C");
+ AliEmcalTrackPropagatorTask *proptask = AddTaskEmcalTrackPropagator();
+ proptask->SelectCollisionCandidates(pSel);
+ }
+
if (makePicoTracks && (dType == "ESD" || dType == "AOD") )
{
- TString inputTracks = "tracks";
+ TString inputTracks = "AODFilterTracks";
const Double_t edist = 440;
if (dType == "ESD")
{
- inputTracks = "HybridTracks";
+ inputTracks = "ESDFilterTracks";
TString trackCuts(Form("Hybrid_%s",period.Data()));
// Hybrid tracks maker for ESD
}
}
- // Produce particles used for hadronic correction, make triggers (if needed), then match!
+ // Trigger maker
+ if (makeTrigger)
+ {
+ AliEmcalTriggerMaker *emcalTriggers = mgr->GetTask(sEmcalTriggerMakerName.Data());
+ if (!emcalTriggers)
+ {
+ gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
+ emcalTriggers = AddTaskEmcalTriggerMaker(sEmcalTriggers.Data(),sEmcalTriggerMakerSetupOutName.Data(),0,0,sEmcalTriggerMakerName.Data(),0,0,0,0,0,0);
+ emcalTriggers->SelectCollisionCandidates(pSel);
+ }
+ }
+
+ // Produce particles used for hadronic correction, then match!
AliEmcalParticleMaker *emcalParts = mgr->GetTask(sEmcalParticleMakerName.Data());
if (!emcalParts)
{
emcalParts = AddTaskEmcalParticleMaker(sPicoTracks.Data(),clusterColName.Data(),sEmcalTracks.Data(),sEmcalClusters.Data(),sEmcalParticleMakerName.Data());
emcalParts->SelectCollisionCandidates(pSel);
- // Trigger maker
- if (makeTrigger)
- {
- AliEmcalTriggerMaker *emcalTriggers = mgr->GetTask(sEmcalTriggerMakerName.Data());
- if (!emcalTriggers)
- {
- gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalTriggerMaker.C");
- emcalTriggers = AddTaskEmcalTriggerMaker(sEmcalTriggers.Data(),sEmcalTriggerMakerSetupOutName.Data(),0,0,sEmcalTriggerMakerName.Data(),0,0,0,0,0,0);
- emcalTriggers->SelectCollisionCandidates(pSel);
- }
- }
-
// Relate tracks and clusters
gROOT->LoadMacro("$ALICE_ROOT/PWG/EMCAL/macros/AddTaskEmcalClusTrackMatcher.C");
AliEmcalClusTrackMatcherTask *emcalClus = AddTaskEmcalClusTrackMatcher(sEmcalTracks.Data(),sEmcalClusters.Data(),0.1,doHistos);
+ emcalClus->SetModifyObjs(kFALSE);
emcalClus->SelectCollisionCandidates(pSel);
if (isEmcalTrain)
{