,fEvtSelectionMask(0)
,fEventClass(0)
,fMaxVertexZ(10)
+ ,fRejectPileup(kFALSE)
,fTrackPtCut(0)
,fTrackEtaMin(0)
,fTrackEtaMax(0)
,fJetEtaMax(0)
,fJetPhiMin(0)
,fJetPhiMax(0)
+ ,fJetMinArea(0)
,fFFRadius(0)
,fFFMinLTrackPt(-1)
,fFFMaxTrackPt(-1)
,fQAJetHistosGenLeading(0)
,fQAJetHistosRecEffLeading(0)
,fFFHistosRecCuts(0)
+ ,fFFHistosRecCutsInc(0)
+ ,fFFHistosRecLeadingTrack(0)
,fFFHistosGen(0)
+ ,fFFHistosGenInc(0)
+ ,fFFHistosGenLeadingTrack(0)
,fQATrackHighPtThreshold(0)
,fFFNBinsJetPt(0)
,fFFJetPtMin(0)
,fEvtSelectionMask(0)
,fEventClass(0)
,fMaxVertexZ(10)
+ ,fRejectPileup(kFALSE)
,fTrackPtCut(0)
,fTrackEtaMin(0)
,fTrackEtaMax(0)
,fJetEtaMax(0)
,fJetPhiMin(0)
,fJetPhiMax(0)
+ ,fJetMinArea(0)
,fFFRadius(0)
,fFFMinLTrackPt(-1)
,fFFMaxTrackPt(-1)
,fQAJetHistosGenLeading(0)
,fQAJetHistosRecEffLeading(0)
,fFFHistosRecCuts(0)
+ ,fFFHistosRecCutsInc(0)
+ ,fFFHistosRecLeadingTrack(0)
,fFFHistosGen(0)
+ ,fFFHistosGenInc(0)
+ ,fFFHistosGenLeadingTrack(0)
,fQATrackHighPtThreshold(0)
,fFFNBinsJetPt(0)
,fFFJetPtMin(0)
,fEvtSelectionMask(copy.fEvtSelectionMask)
,fEventClass(copy.fEventClass)
,fMaxVertexZ(copy.fMaxVertexZ)
+ ,fRejectPileup(copy.fRejectPileup)
,fTrackPtCut(copy.fTrackPtCut)
,fTrackEtaMin(copy.fTrackEtaMin)
,fTrackEtaMax(copy.fTrackEtaMax)
,fJetEtaMax(copy.fJetEtaMax)
,fJetPhiMin(copy.fJetPhiMin)
,fJetPhiMax(copy.fJetPhiMax)
+ ,fJetMinArea(copy.fJetMinArea)
,fFFRadius(copy.fFFRadius)
,fFFMinLTrackPt(copy.fFFMinLTrackPt)
,fFFMaxTrackPt(copy.fFFMaxTrackPt)
,fQAJetHistosGenLeading(copy.fQAJetHistosGenLeading)
,fQAJetHistosRecEffLeading(copy.fQAJetHistosRecEffLeading)
,fFFHistosRecCuts(copy.fFFHistosRecCuts)
+ ,fFFHistosRecCutsInc(copy.fFFHistosRecCutsInc)
+ ,fFFHistosRecLeadingTrack(copy.fFFHistosRecLeadingTrack)
,fFFHistosGen(copy.fFFHistosGen)
+ ,fFFHistosGenInc(copy.fFFHistosGenInc)
+ ,fFFHistosGenLeadingTrack(copy.fFFHistosGenLeadingTrack)
,fQATrackHighPtThreshold(copy.fQATrackHighPtThreshold)
,fFFNBinsJetPt(copy.fFFNBinsJetPt)
,fFFJetPtMin(copy.fFFJetPtMin)
fEvtSelectionMask = o.fEvtSelectionMask;
fEventClass = o.fEventClass;
fMaxVertexZ = o.fMaxVertexZ;
+ fRejectPileup = o.fRejectPileup;
fTrackPtCut = o.fTrackPtCut;
fTrackEtaMin = o.fTrackEtaMin;
fTrackEtaMax = o.fTrackEtaMax;
fJetEtaMax = o.fJetEtaMax;
fJetPhiMin = o.fJetPhiMin;
fJetPhiMax = o.fJetPhiMin;
+ fJetMinArea = o.fJetMinArea;
fFFRadius = o.fFFRadius;
fFFMinLTrackPt = o.fFFMinLTrackPt;
fFFMaxTrackPt = o.fFFMaxTrackPt;
fQAJetHistosGenLeading = o.fQAJetHistosGenLeading;
fQAJetHistosRecEffLeading = o.fQAJetHistosRecEffLeading;
fFFHistosRecCuts = o.fFFHistosRecCuts;
+ fFFHistosRecCutsInc = o.fFFHistosRecCutsInc;
+ fFFHistosRecLeadingTrack = o.fFFHistosRecLeadingTrack;
fFFHistosGen = o.fFFHistosGen;
+ fFFHistosGenInc = o.fFFHistosGenInc;
+ fFFHistosGenLeadingTrack = o.fFFHistosGenLeadingTrack;
fQATrackHighPtThreshold = o.fQATrackHighPtThreshold;
fFFNBinsJetPt = o.fFFNBinsJetPt;
fFFJetPtMin = o.fFFJetPtMin;
// Histograms
- fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 6, -0.5, 5.5);
+ fh1EvtSelection = new TH1F("fh1EvtSelection", "Event Selection", 7, -0.5, 6.5);
fh1EvtSelection->GetXaxis()->SetBinLabel(1,"ACCEPTED");
fh1EvtSelection->GetXaxis()->SetBinLabel(2,"event selection: rejected");
fh1EvtSelection->GetXaxis()->SetBinLabel(3,"event class: rejected");
fh1EvtSelection->GetXaxis()->SetBinLabel(4,"vertex Ncontr: rejected");
fh1EvtSelection->GetXaxis()->SetBinLabel(5,"vertex z: rejected");
fh1EvtSelection->GetXaxis()->SetBinLabel(6,"vertex type: rejected");
-
+ fh1EvtSelection->GetXaxis()->SetBinLabel(7,"pileup: rejected");
+
fh1VertexNContributors = new TH1F("fh1VertexNContributors", "Vertex N contributors", 2500,-.5, 2499.5);
fh1VertexZ = new TH1F("fh1VertexZ", "Vertex z distribution", 30, -15., 15.);
fh1EvtMult = new TH1F("fh1EvtMult","Event multiplicity, track pT cut > 150 MeV/c, |#eta| < 0.9",120,0.,12000.);
fFFNBinsXi, fFFXiMin, fFFXiMax,
fFFNBinsZ , fFFZMin , fFFZMax );
- fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
+
+ fFFHistosRecCutsInc = new AliFragFuncHistos("RecCutsInc", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
fFFNBinsPt, fFFPtMin, fFFPtMax,
fFFNBinsXi, fFFXiMin, fFFXiMax,
- fFFNBinsZ , fFFZMin , fFFZMax);
+ fFFNBinsZ , fFFZMin , fFFZMax );
+
+
+ fFFHistosRecLeadingTrack = new AliFragFuncHistos("RecLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
+ fFFNBinsPt, fFFPtMin, fFFPtMax,
+ fFFNBinsXi, fFFXiMin, fFFXiMax,
+ fFFNBinsZ , fFFZMin , fFFZMax );
+
+ fFFHistosGen = new AliFragFuncHistos("Gen", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
+ fFFNBinsPt, fFFPtMin, fFFPtMax,
+ fFFNBinsXi, fFFXiMin, fFFXiMax,
+ fFFNBinsZ , fFFZMin , fFFZMax);
+
+ fFFHistosGenInc = new AliFragFuncHistos("GenInc", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
+ fFFNBinsPt, fFFPtMin, fFFPtMax,
+ fFFNBinsXi, fFFXiMin, fFFXiMax,
+ fFFNBinsZ , fFFZMin , fFFZMax);
+
+ fFFHistosGenLeadingTrack = new AliFragFuncHistos("GenLeadingTrack", fFFNBinsJetPt, fFFJetPtMin, fFFJetPtMax,
+ fFFNBinsPt, fFFPtMin, fFFPtMax,
+ fFFNBinsXi, fFFXiMin, fFFXiMax,
+ fFFNBinsZ , fFFZMin , fFFZMax);
+
} // end: FF
// efficiency
if(fFFMode){
fFFHistosRecCuts->DefineHistos();
+ fFFHistosRecCutsInc->DefineHistos();
+ fFFHistosRecLeadingTrack->DefineHistos();
fFFHistosGen->DefineHistos();
+ fFFHistosGenInc->DefineHistos();
+ fFFHistosGenLeadingTrack->DefineHistos();
}
if(fEffMode){
// FF histograms
if(fFFMode){
fFFHistosRecCuts->AddToOutput(fCommonHistList);
+ fFFHistosRecCutsInc->AddToOutput(fCommonHistList);
+ fFFHistosRecLeadingTrack->AddToOutput(fCommonHistList);
+
if(genJets && genTracks){
fFFHistosGen->AddToOutput(fCommonHistList);
+ fFFHistosGenInc->AddToOutput(fCommonHistList);
+ fFFHistosGenLeadingTrack->AddToOutput(fCommonHistList);
}
}
return;
}
+ if(fRejectPileup && AliAnalysisHelperJetTasks::IsPileUp()){
+ if (fDebug > 1) Printf("%s:%d SPD pileup: event REJECTED...",(char*)__FILE__,__LINE__);
+ fh1EvtSelection->Fill(6.);
+ PostData(1, fCommonHistList);
+ return;
+ }
+
if (fDebug > 1) Printf("%s:%d event ACCEPTED ...",(char*)__FILE__,__LINE__);
fh1EvtSelection->Fill(0.);
fh1EvtCent->Fill(centPercent);
AliAODJet* jet = (AliAODJet*)(fJetsRecCuts->At(ij));
if(fQAMode&2) fQAJetHistosRecCuts->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
-
- if(ij==0){ // leading jet
-
- if(fQAMode&2) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
+
+ if(fQAMode&2 && ij==0) fQAJetHistosRecCutsLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt() );
- Double_t ptFractionEmbedded = 0;
- AliAODJet* embeddedJet = 0;
-
- if(fBranchEmbeddedJets.Length()){ // find embedded jet
-
- Int_t indexEmbedded = -1;
- for(Int_t i=0; i<nEmbeddedJets; i++){
- if(iEmbeddedMatchIndex[i] == ij){
- indexEmbedded = i;
- ptFractionEmbedded = fEmbeddedPtFraction[i];
- }
- }
+ Double_t ptFractionEmbedded = 0;
+ AliAODJet* embeddedJet = 0;
- fh1IndexEmbedded->Fill(indexEmbedded);
- fh1FractionPtEmbedded->Fill(ptFractionEmbedded);
-
- if(indexEmbedded>-1){
-
- embeddedJet = dynamic_cast<AliAODJet*>(fJetsEmbedded->At(indexEmbedded));
- if(!embeddedJet) continue;
+ if(fBranchEmbeddedJets.Length()){ // find embedded jet
- Double_t deltaPt = jet->Pt() - embeddedJet->Pt();
- Double_t deltaR = jet->DeltaR((AliVParticle*) (embeddedJet));
-
- fh2DeltaPtVsJetPtEmbedded->Fill(embeddedJet->Pt(),deltaPt);
- fh2DeltaPtVsRecJetPtEmbedded->Fill(jet->Pt(),deltaPt);
- fh1DeltaREmbedded->Fill(deltaR);
+ Int_t indexEmbedded = -1;
+ for(Int_t i=0; i<nEmbeddedJets; i++){
+ if(iEmbeddedMatchIndex[i] == ij){
+ indexEmbedded = i;
+ ptFractionEmbedded = fEmbeddedPtFraction[i];
}
}
- // get tracks in jet
- TList* jettracklist = new TList();
- Double_t sumPt = 0.;
- Bool_t isBadJet = kFALSE;
-
- if(GetFFRadius()<=0){
- GetJetTracksTrackrefs(jettracklist, jet, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
- } else {
- if(fUseEmbeddedJetAxis){
- if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet, GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
- }
- else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet, GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
- }
+ fh1IndexEmbedded->Fill(indexEmbedded);
+ fh1FractionPtEmbedded->Fill(ptFractionEmbedded);
- if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;
-
- if(isBadJet) continue;
-
- if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0
-
- for(Int_t it=0; it<jettracklist->GetSize(); ++it){
-
- AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
- if(!trackVP)continue;
-
- AliAODTrack * aodtrack = dynamic_cast<AliAODTrack*>(jettracklist->At(it));
- if(!aodtrack) continue;
-
- TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
-
- Float_t jetPt = jet->Pt();
- if(fUseEmbeddedJetPt){
- if(embeddedJet) jetPt = embeddedJet->Pt();
- else jetPt = 0;
- }
- Float_t trackPt = trackV->Pt();
-
-
- Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
+ if(indexEmbedded>-1){
- if(fFFMode) fFFHistosRecCuts->FillFF(trackPt, jetPt, incrementJetPt);
+ embeddedJet = dynamic_cast<AliAODJet*>(fJetsEmbedded->At(indexEmbedded));
+ if(!embeddedJet) continue;
- delete trackV;
- }
+ Double_t deltaPt = jet->Pt() - embeddedJet->Pt();
+ Double_t deltaR = jet->DeltaR((AliVParticle*) (embeddedJet));
- // background ff
- if(fBckgMode){
- if(fBckgType[0]!=kBckgNone)
- FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet,
- fFFBckgHisto0RecCuts,fQABckgHisto0RecCuts, fh1BckgMult0);
- if(fBckgType[1]!=kBckgNone)
- FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet,
- fFFBckgHisto1RecCuts,fQABckgHisto1RecCuts, fh1BckgMult1);
- if(fBckgType[2]!=kBckgNone)
- FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet,
- fFFBckgHisto2RecCuts,fQABckgHisto2RecCuts, fh1BckgMult2);
- if(fBckgType[3]!=kBckgNone)
- FillBckgHistos(fBckgType[3], fTracksRecCuts, fJetsRecCuts, jet,
- fFFBckgHisto3RecCuts,fQABckgHisto3RecCuts, fh1BckgMult3);
- if(fBckgType[4]!=kBckgNone)
- FillBckgHistos(fBckgType[4], fTracksRecCuts, fJetsRecCuts, jet,
- fFFBckgHisto4RecCuts,fQABckgHisto4RecCuts, fh1BckgMult4);
- } // end if(fBckgMode)
-
-
- if(fJSMode) FillJetShape(jet, jettracklist, fProNtracksLeadingJet, fProDelRPtSum, fProDelR80pcPt);
-
- delete jettracklist;
-
- } // end: cut embedded ratio
- } // end: leading jet
- } // end: rec. jets after cuts
-
- // generated jets
- for(Int_t ij=0; ij<nGenJets; ++ij){
-
- AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
- if(!jet)continue;
- if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
-
- if(ij==0){ // leading jet
-
- if(fQAMode&2) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
-
- TList* jettracklist = new TList();
- Double_t sumPt = 0.;
- Bool_t isBadJet = kFALSE;
-
- if(GetFFRadius()<=0){
- GetJetTracksTrackrefs(jettracklist, jet, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
- } else {
- GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
+ fh2DeltaPtVsJetPtEmbedded->Fill(embeddedJet->Pt(),deltaPt);
+ fh2DeltaPtVsRecJetPtEmbedded->Fill(jet->Pt(),deltaPt);
+ fh1DeltaREmbedded->Fill(deltaR);
}
+ }
+
+ // get tracks in jet
+ TList* jettracklist = new TList();
+ Double_t sumPt = 0.;
+ Bool_t isBadJet = kFALSE;
+
+ if(GetFFRadius()<=0){
+ GetJetTracksTrackrefs(jettracklist, jet, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
+ } else {
+ if(fUseEmbeddedJetAxis){
+ if(embeddedJet) GetJetTracksPointing(fTracksRecCuts, jettracklist, embeddedJet,
+ GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
+ }
+ else GetJetTracksPointing(fTracksRecCuts, jettracklist, jet,
+ GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
+ }
- if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;;
- if(isBadJet) continue;
+ if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;
+
+ if(isBadJet){
+ delete jettracklist;
+ continue;
+ }
+ if(ptFractionEmbedded>=fCutFractionPtEmbedded){ // if no embedding: ptFraction = cutFraction = 0
+
for(Int_t it=0; it<jettracklist->GetSize(); ++it){
AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
if(!trackVP)continue;
+
+ AliAODTrack * aodtrack = dynamic_cast<AliAODTrack*>(jettracklist->At(it));
+ if(!aodtrack) continue;
+
TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
Float_t jetPt = jet->Pt();
+ if(fUseEmbeddedJetPt){
+ if(embeddedJet) jetPt = embeddedJet->Pt();
+ else jetPt = 0;
+ }
Float_t trackPt = trackV->Pt();
-
+
Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
+
+ if(fFFMode && (ij==0)) fFFHistosRecCuts->FillFF(trackPt, jetPt, incrementJetPt);
+ if(fFFMode) fFFHistosRecCutsInc->FillFF(trackPt, jetPt, incrementJetPt);
- if(fFFMode) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt );
+ if(it==0){ // leading track
+ if(fFFMode) fFFHistosRecLeadingTrack->FillFF( trackPt, jetPt, kTRUE);
+ }
delete trackV;
}
-
- if(fBckgMode){
+
+ // background ff
+ if(fBckgMode && (ij==0)){
if(fBckgType[0]!=kBckgNone)
- FillBckgHistos(fBckgType[0], fTracksGen, fJetsGen, jet,
- fFFBckgHisto0Gen, fQABckgHisto0Gen);
+ FillBckgHistos(fBckgType[0], fTracksRecCuts, fJetsRecCuts, jet,
+ fFFBckgHisto0RecCuts,fQABckgHisto0RecCuts, fh1BckgMult0);
if(fBckgType[1]!=kBckgNone)
- FillBckgHistos(fBckgType[1], fTracksGen, fJetsGen, jet,
- fFFBckgHisto1Gen, fQABckgHisto1Gen);
+ FillBckgHistos(fBckgType[1], fTracksRecCuts, fJetsRecCuts, jet,
+ fFFBckgHisto1RecCuts,fQABckgHisto1RecCuts, fh1BckgMult1);
if(fBckgType[2]!=kBckgNone)
- FillBckgHistos(fBckgType[2], fTracksGen, fJetsGen, jet,
- fFFBckgHisto2Gen, fQABckgHisto2Gen);
+ FillBckgHistos(fBckgType[2], fTracksRecCuts, fJetsRecCuts, jet,
+ fFFBckgHisto2RecCuts,fQABckgHisto2RecCuts, fh1BckgMult2);
if(fBckgType[3]!=kBckgNone)
- FillBckgHistos(fBckgType[3], fTracksGen, fJetsGen, jet,
- fFFBckgHisto3Gen, fQABckgHisto3Gen);
+ FillBckgHistos(fBckgType[3], fTracksRecCuts, fJetsRecCuts, jet,
+ fFFBckgHisto3RecCuts,fQABckgHisto3RecCuts, fh1BckgMult3);
if(fBckgType[4]!=kBckgNone)
- FillBckgHistos(fBckgType[4], fTracksGen, fJetsGen, jet,
- fFFBckgHisto4Gen, fQABckgHisto4Gen);
+ FillBckgHistos(fBckgType[4], fTracksRecCuts, fJetsRecCuts, jet,
+ fFFBckgHisto4RecCuts,fQABckgHisto4RecCuts, fh1BckgMult4);
} // end if(fBckgMode)
- if(fJSMode) FillJetShape(jet, jettracklist, fProNtracksLeadingJetGen, fProDelRPtSumGen, fProDelR80pcPtGen);
+ if(fJSMode && (ij==0)) FillJetShape(jet, jettracklist, fProNtracksLeadingJet, fProDelRPtSum, fProDelR80pcPt);
+
+ delete jettracklist;
+
+ } // end: cut embedded ratio
+ } // end: rec. jets after cuts
+
+ // generated jets
+ for(Int_t ij=0; ij<nGenJets; ++ij){
+
+ AliAODJet* jet = dynamic_cast<AliAODJet*>(fJetsGen->At(ij));
+ if(!jet)continue;
+
+ if(fQAMode&2) fQAJetHistosGen->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
+
+ if(fQAMode&2 && (ij==0)) fQAJetHistosGenLeading->FillJetQA( jet->Eta(), TVector2::Phi_0_2pi(jet->Phi()), jet->Pt());
+ TList* jettracklist = new TList();
+ Double_t sumPt = 0.;
+ Bool_t isBadJet = kFALSE;
+
+ if(GetFFRadius()<=0){
+ GetJetTracksTrackrefs(jettracklist, jet, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
+ } else {
+ GetJetTracksPointing(fTracksGen, jettracklist, jet, GetFFRadius(), sumPt, GetFFMinLTrackPt(), GetFFMaxTrackPt(), isBadJet);
+ }
+
+ if(GetFFMinNTracks()>0 && jettracklist->GetSize()<=GetFFMinNTracks()) isBadJet = kTRUE;;
+
+ if(isBadJet){
delete jettracklist;
+ continue;
+ }
+
+ for(Int_t it=0; it<jettracklist->GetSize(); ++it){
+
+ AliVParticle* trackVP = dynamic_cast<AliVParticle*>(jettracklist->At(it));
+ if(!trackVP)continue;
+ TLorentzVector* trackV = new TLorentzVector(trackVP->Px(),trackVP->Py(),trackVP->Pz(),trackVP->P());
+
+ Float_t jetPt = jet->Pt();
+ Float_t trackPt = trackV->Pt();
+
+ Bool_t incrementJetPt = (it==0) ? kTRUE : kFALSE;
+
+ if(fFFMode && (ij==0)) fFFHistosGen->FillFF( trackPt, jetPt, incrementJetPt );
+ if(fFFMode) fFFHistosGenInc->FillFF( trackPt, jetPt, incrementJetPt );
+
+ if(it==0){ // leading track
+ if(fFFMode) fFFHistosGenLeadingTrack->FillFF( trackPt, jetPt, kTRUE );
+ }
+
+ delete trackV;
}
- }
- } // end: QA, FF and intra-jet
+ if(fBckgMode && (ij==0)){
+ if(fBckgType[0]!=kBckgNone)
+ FillBckgHistos(fBckgType[0], fTracksGen, fJetsGen, jet,
+ fFFBckgHisto0Gen, fQABckgHisto0Gen);
+ if(fBckgType[1]!=kBckgNone)
+ FillBckgHistos(fBckgType[1], fTracksGen, fJetsGen, jet,
+ fFFBckgHisto1Gen, fQABckgHisto1Gen);
+ if(fBckgType[2]!=kBckgNone)
+ FillBckgHistos(fBckgType[2], fTracksGen, fJetsGen, jet,
+ fFFBckgHisto2Gen, fQABckgHisto2Gen);
+ if(fBckgType[3]!=kBckgNone)
+ FillBckgHistos(fBckgType[3], fTracksGen, fJetsGen, jet,
+ fFFBckgHisto3Gen, fQABckgHisto3Gen);
+ if(fBckgType[4]!=kBckgNone)
+ FillBckgHistos(fBckgType[4], fTracksGen, fJetsGen, jet,
+ fFFBckgHisto4Gen, fQABckgHisto4Gen);
+ } // end if(fBckgMode)
+ if(fJSMode && (ij==0)) FillJetShape(jet, jettracklist, fProNtracksLeadingJetGen, fProDelRPtSumGen, fProDelR80pcPtGen);
+
+ delete jettracklist;
+ }
+ } // end: QA, FF and intra-jet
+
+
// ____ efficiency _______________________________
if(fEffMode && (fJetTypeRecEff != kJetsUndef)){
if(GetFFMinNTracks()>0 && jettracklistGenSecNS->GetSize()<=GetFFMinNTracks()) isBadJetGenSec = kTRUE;
if(GetFFMinNTracks()>0 && jettracklistRec->GetSize()<=GetFFMinNTracks()) isBadJetRec = kTRUE;
- if(isBadJetRec) continue;
+ if(isBadJetRec){
+ delete jettracklistGenPrim;
+ delete jettracklistGenSecNS;
+ delete jettracklistGenSecS;
+ delete jettracklistRec;
+
+ continue;
+ }
if(fQAMode&2) fQAJetHistosRecEffLeading->FillJetQA( jetEta, jetPhi, sumPtGenLeadingJetRecEff );
jettracklistRec,kTRUE,fJSMode,fProNtracksLeadingJetRecSecSsc,fProDelRPtSumRecSecSsc);
}
- delete jettracklistGenPrim;
+ delete jettracklistGenPrim;
delete jettracklistGenSecNS;
delete jettracklistGenSecS;
delete jettracklistRec;
TList* perpjettracklistGen1 = new TList();
TList* perpjettracklistGen2 = new TList();
- Double_t sumPtGenPerp = 0.;
+ //Double_t sumPtGenPerp = 0.;
Double_t sumPtGenPerp1 = 0.;
Double_t sumPtGenPerp2 = 0.;
GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksAODMCCharged, perpjettracklistGen1, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerp1);
perpjettracklistGen->AddAll(perpjettracklistGen1);
perpjettracklistGen->AddAll(perpjettracklistGen2);
- sumPtGenPerp = 0.5*(sumPtGenPerp1+sumPtGenPerp2);
+ //sumPtGenPerp = 0.5*(sumPtGenPerp1+sumPtGenPerp2);
TList* perpjettracklistGenSecNS = new TList();
TList* perpjettracklistGenSecNS1 = new TList();
TList* perpjettracklistGenSecNS2 = new TList();
- Double_t sumPtGenPerpNS;
+ //Double_t sumPtGenPerpNS;
Double_t sumPtGenPerpNS1;
Double_t sumPtGenPerpNS2;
GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksAODMCChargedSecNS, perpjettracklistGenSecNS1, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerpNS1);
perpjettracklistGenSecNS->AddAll(perpjettracklistGenSecNS1);
perpjettracklistGenSecNS->AddAll(perpjettracklistGenSecNS2);
- sumPtGenPerpNS = 0.5*(sumPtGenPerpNS1+sumPtGenPerpNS2);
+ //sumPtGenPerpNS = 0.5*(sumPtGenPerpNS1+sumPtGenPerpNS2);
TList* perpjettracklistGenSecS = new TList();
TList* perpjettracklistGenSecS1 = new TList();
TList* perpjettracklistGenSecS2 = new TList();
- Double_t sumPtGenPerpS;
+ //Double_t sumPtGenPerpS;
Double_t sumPtGenPerpS1;
Double_t sumPtGenPerpS2;
GetTracksTiltedwrpJetAxis(TMath::Pi()/2.,fTracksAODMCChargedSecS, perpjettracklistGenSecS1, jet, TMath::Abs(GetFFRadius()) , sumPtGenPerpS1);
perpjettracklistGenSecS->AddAll(perpjettracklistGenSecS1);
perpjettracklistGenSecS->AddAll(perpjettracklistGenSecS2);
- sumPtGenPerpS = 0.5*(sumPtGenPerpS1+sumPtGenPerpS2);
+ //sumPtGenPerpS = 0.5*(sumPtGenPerpS1+sumPtGenPerpS2);
if(perpjettracklistGen->GetSize() != perpjettracklistGen1->GetSize() + perpjettracklistGen2->GetSize()){
if(type==kTrackAODMCChargedSecNS || type==kTrackAODMCChargedSecS){
Bool_t isFromStrange = kFALSE;
Int_t iMother = part->GetMother();
- if(iMother >= 0){
- AliAODMCParticle *partM = dynamic_cast<AliAODMCParticle*>(tca->At(iMother));
- if(!partM) continue;
- Int_t codeM = TMath::Abs(partM->GetPdgCode());
- Int_t mfl = Int_t (codeM/ TMath::Power(10, Int_t(TMath::Log10(codeM))));
- if (mfl == 3 && codeM != 3) isFromStrange = kTRUE;
+ if(iMother < 0) continue; // throw out PYTHIA stack partons + incoming protons
+
+ AliAODMCParticle *partM = dynamic_cast<AliAODMCParticle*>(tca->At(iMother));
+ if(!partM) continue;
+
+ Int_t codeM = TMath::Abs(partM->GetPdgCode());
+ Int_t mfl = Int_t (codeM/ TMath::Power(10, Int_t(TMath::Log10(codeM))));
+ if (mfl == 3 && codeM != 3) isFromStrange = kTRUE;
- // if(mfl ==3){
- // cout<<" mfl "<<mfl<<" codeM "<<partM->GetPdgCode()<<" code this track "<<part->GetPdgCode()<<endl;
- // cout<<" index this track "<<it<<" index daughter 0 "<<partM->GetDaughter(0)<<" 1 "<<partM->GetDaughter(1)<<endl;
- // }
+ if(codeM == 130) isFromStrange = kTRUE; // K0 long
+ if(part->IsSecondaryFromMaterial()) isFromStrange = kFALSE; // strange resonances from hadronic showers ?
- if(type==kTrackAODMCChargedSecNS && isFromStrange) continue;
- if(type==kTrackAODMCChargedSecS && !isFromStrange) continue;
- }
+ // if(mfl ==3){
+ // cout<<" mfl "<<mfl<<" codeM "<<partM->GetPdgCode()<<" code this track "<<part->GetPdgCode()<<endl;
+ // cout<<" index this track "<<it<<" index daughter 0 "<<partM->GetDaughter(0)<<" 1 "<<partM->GetDaughter(1)<<endl;
+ // }
+
+ if(type==kTrackAODMCChargedSecNS && isFromStrange) continue;
+ if(type==kTrackAODMCChargedSecS && !isFromStrange) continue;
}
+
if(type==kTrackAODMCChargedAcceptance &&
( part->Eta() > fTrackEtaMax
if(!tmp) continue;
if( tmp->Pt() < fJetPtCut ) continue;
+ if( tmp->EffectiveAreaCharged() < fJetMinArea ) continue;
if( type == kJetsRecAcceptance &&
( tmp->Eta() < fJetEtaMin
|| tmp->Eta() > fJetEtaMax
if(!tmp) continue;
if( tmp->Pt() < fJetPtCut ) continue;
+ if( tmp->EffectiveAreaCharged() < fJetMinArea ) continue;
if( type == kJetsGenAcceptance &&
( tmp->Eta() < fJetEtaMin
|| tmp->Eta() > fJetEtaMax
if(!tmp) continue;
if( tmp->Pt() < fJetPtCut ) continue;
+ if( tmp->EffectiveAreaCharged() < fJetMinArea ) continue;
if( tmp->Eta() < fJetEtaMin
|| tmp->Eta() > fJetEtaMax
|| tmp->Phi() < fJetPhiMin
}
// _________________________________________________________________________________________________________
-void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h,const Int_t dim, const char** labels)
+void AliAnalysisTaskFragmentationFunction::SetProperties(THnSparse* h, Int_t dim, const char** labels)
{
// Set properties of THnSparse
// ________________________________________________________________________________________________________________________________________________________
void AliAnalysisTaskFragmentationFunction::GetJetTracksPointing(TList* inputlist, TList* outputlist, const AliAODJet* jet,
- const Double_t radius, Double_t& sumPt, const Double_t minPtL, const Double_t maxPt, Bool_t& isBadPt)
+ Double_t radius, Double_t& sumPt, Double_t minPtL, Double_t maxPt, Bool_t& isBadPt)
{
// fill list of tracks in cone around jet axis
}
// _________________________________________________________________________________________________________________________________________________________________
-void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, const Double_t minPtL, const Double_t maxPt, Bool_t& isBadPt)
+void AliAnalysisTaskFragmentationFunction::GetJetTracksTrackrefs(TList* list, const AliAODJet* jet, Double_t minPtL, Double_t maxPt, Bool_t& isBadPt)
{
// list of jet tracks from trackrefs
// _____________________________________________________________________________________________________________________________________________
void AliAnalysisTaskFragmentationFunction::FillSingleTrackHistosRecGen(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen,
- const TArrayI& indexAODTr, const TArrayS& isRefGen, const Bool_t scaleStrangeness){
+ const TArrayI& indexAODTr, const TArrayS& isRefGen, Bool_t scaleStrangeness){
// fill QA for single track reconstruction efficiency
void AliAnalysisTaskFragmentationFunction::FillJetTrackHistosRec(AliFragFuncHistos* ffhistRec, AliAODJet* jet,
TList* jetTrackList, const TList* tracksGen, const TList* tracksRec, const TArrayI& indexAODTr,
- const TArrayS& isRefGen, TList* jetTrackListTR, const Bool_t scaleStrangeness,
+ const TArrayS& isRefGen, TList* jetTrackListTR, Bool_t scaleStrangeness,
Bool_t fillJS, TProfile* hProNtracksLeadingJet, TProfile** hProDelRPtSum, TProfile* hProDelR80pcPt)
{
// fill objects for jet track reconstruction efficiency or secondaries contamination
}
// ______________________________________________________________________________________________________________________________________________________
-Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(const Float_t etaJet, const Float_t rc) const
+Float_t AliAnalysisTaskFragmentationFunction::CalcJetArea(Float_t etaJet, Float_t rc) const
{
// calculate area of jet with eta etaJet and radius rc
// get median cluster
AliAODJet* medianCluster = 0;
- Double_t medianDensity = 0;
+ //Double_t medianDensity = 0;
if(TMath::Odd(nBckgClusters)){
Int_t medianIndex = indices[(Int_t) (0.5*(nBckgClusters-1))];
medianCluster = (AliAODJet*)(fBckgJetsRec->At(medianIndex));
- Double_t clusterPt = medianCluster->Pt();
- Double_t area = medianCluster->EffectiveAreaCharged();
+ //Double_t clusterPt = medianCluster->Pt();
+ //Double_t area = medianCluster->EffectiveAreaCharged();
- if(area>0) medianDensity = clusterPt/area;
+ //if(area>0) medianDensity = clusterPt/area;
}
else{
AliAODJet* medianCluster1 = (AliAODJet*)(fBckgJetsRec->At(medianIndex1));
AliAODJet* medianCluster2 = (AliAODJet*)(fBckgJetsRec->At(medianIndex2));
- Double_t density1 = 0;
- Double_t clusterPt1 = medianCluster1->Pt();
- Double_t area1 = medianCluster1->EffectiveAreaCharged();
- if(area1>0) density1 = clusterPt1/area1;
+ //Double_t density1 = 0;
+ //Double_t clusterPt1 = medianCluster1->Pt();
+ //Double_t area1 = medianCluster1->EffectiveAreaCharged();
+ //if(area1>0) density1 = clusterPt1/area1;
- Double_t density2 = 0;
- Double_t clusterPt2 = medianCluster2->Pt();
- Double_t area2 = medianCluster2->EffectiveAreaCharged();
- if(area2>0) density2 = clusterPt2/area2;
+ //Double_t density2 = 0;
+ //Double_t clusterPt2 = medianCluster2->Pt();
+ //Double_t area2 = medianCluster2->EffectiveAreaCharged();
+ //if(area2>0) density2 = clusterPt2/area2;
- medianDensity = 0.5*(density1+density2);
+ //medianDensity = 0.5*(density1+density2);
medianCluster = ( (fRandom->Rndm()>0.5) ? medianCluster1 : medianCluster2 ); // select one randomly to avoid adding areas
}
}
//_____________________________________________________________________________________
-Double_t AliAnalysisTaskFragmentationFunction::GetMCStrangenessFactor(const Double_t pt)
+Double_t AliAnalysisTaskFragmentationFunction::GetMCStrangenessFactor(Double_t pt)
{
// factor strangeness data/MC as function of pt from UE analysis (Sara Vallero)
Double_t fac = 1;
- if(motherPDG == 310 || TMath::Abs(motherPDG)==321){ // K0s / K+ / K-
+ if(TMath::Abs(motherPDG) == 310 || TMath::Abs(motherPDG)==321){ // K0s / K+ / K-
if(0.00 <= motherPt && motherPt < 0.20) fac = 0.768049;
else if(0.20 <= motherPt && motherPt < 0.40) fac = 0.732933;
else if(8.00 <= motherPt && motherPt < 10.00) fac = 0.835865;
}
- if(motherPDG == 3122){ // Lambda
+ if(TMath::Abs(motherPDG) == 3122){ // Lambda
if(0.00 <= motherPt && motherPt < 0.20) fac = 0.645162;
else if(0.20 <= motherPt && motherPt < 0.40) fac = 0.627431;
else if(8.00 <= motherPt && motherPt < 10.00) fac = 1.020021;
}
- if(motherPDG == 3312 || motherPDG == 3322){ // xi
+ if(TMath::Abs(motherPDG) == 3312 || TMath::Abs(motherPDG) == 3322){ // xi
if(0.00 <= motherPt && motherPt < 0.20) fac = 0.666620;
else if(0.20 <= motherPt && motherPt < 0.40) fac = 0.575908;