fFillOnlyD0D0bar(0),
fIsSelectedCandidate(0),
fSys(0),
+ fEtaForCorrel(0),
fIsRejectSDDClusters(0),
fFillGlobal(kTRUE)
{
fFillOnlyD0D0bar(0),
fIsSelectedCandidate(0),
fSys(0),
+ fEtaForCorrel(0),
fIsRejectSDDClusters(0),
fFillGlobal(kTRUE)
{
fFillOnlyD0D0bar(source.fFillOnlyD0D0bar),
fIsSelectedCandidate(source.fIsSelectedCandidate),
fSys(source.fSys),
+ fEtaForCorrel(source.fEtaForCorrel),
fIsRejectSDDClusters(source.fIsRejectSDDClusters),
fFillGlobal(source.fFillGlobal)
{
fFillOnlyD0D0bar = orig.fFillOnlyD0D0bar;
fIsSelectedCandidate = orig.fIsSelectedCandidate;
fSys = orig.fSys;
+ fEtaForCorrel = orig.fEtaForCorrel;
fIsRejectSDDClusters = orig.fIsRejectSDDClusters;
fFillGlobal = orig.fFillGlobal;
return;
}
+ //Setting PIDResponse for associated tracks
+ fCorrelatorTr->SetPidAssociated();
+ fCorrelatorKc->SetPidAssociated();
+ fCorrelatorK0->SetPidAssociated();
+
// Check the Nb of SDD clusters
if (fIsRejectSDDClusters) {
Bool_t skipEvent = kFALSE;
fCorrelatorK0->SetD0Properties(d,fIsSelectedCandidate);
if(!fReadMC) {
- CalculateCorrelations(d); //correlations on real data
+ if (TMath::Abs(d->Eta())<fEtaForCorrel) CalculateCorrelations(d); //correlations on real data
} else { //correlations on MC -> association of selected D0 to MCinfo with MCtruth
- Int_t pdgDgD0toKpi[2]={321,211};
- Int_t labD0 = d->MatchToMC(421,mcArray,2,pdgDgD0toKpi); //return MC particle label if the array corresponds to a D0, -1 if not
- if (labD0>-1) {
- CalculateCorrelations(d,labD0,mcArray);
+ if (TMath::Abs(d->Eta())<fEtaForCorrel) {
+ Int_t pdgDgD0toKpi[2]={321,211};
+ Int_t labD0 = d->MatchToMC(421,mcArray,2,pdgDgD0toKpi); //return MC particle label if the array corresponds to a D0, -1 if not
+ if (labD0>-1) CalculateCorrelations(d,labD0,mcArray);
}
}
//retrieving leading info...
if(track->Pt() > highPt) {
if(fReadMC && track->GetLabel()<1) continue;
- if(fReadMC && !(AliAODMCParticle*)mcArray->At(track->GetLabel())) return;
+ if(fReadMC && !(AliAODMCParticle*)mcArray->At(track->GetLabel())) continue;
lead[0] = fCorrelatorTr->GetDeltaPhi();
lead[1] = fCorrelatorTr->GetDeltaEta();
lead[2] = fReadMC ? CheckTrackOrigin(mcArray,(AliAODMCParticle*)mcArray->At(track->GetLabel())) : 0;
cout << fPtThreshUp.at(i) << "; ";
}
cout << "\n--------------------------\n";
+ cout << "D0 Eta cut for Correl = "<<fEtaForCorrel<<"\n";
+ cout << "--------------------------\n";
cout << "MC Truth = "<<fReadMC<<"\n";
cout << "--------------------------\n";
cout << "Ev Mixing = "<<fMixing<<"\n";
Int_t GetSystem() const {return fSys;}
Bool_t GetRejectSDDClusters() const {return fIsRejectSDDClusters;}
Bool_t GetFillGlobalPlots() const {return fFillGlobal;}
+ Double_t GetEtaForCorrel() {return fEtaForCorrel;}
//correlations setters/printers
void SetNPtBinsCorr(Int_t nbins) {fNPtBinsCorr = nbins;}
void PrintBinsAndLimits();
Int_t PtBinCorr(Double_t pt) const;
void SetEvMixing(Bool_t mix) {fMixing=mix;}
+ void SetEtaForCorrel(Double_t etacorr) {fEtaForCorrel=etacorr;}
enum PartType {kTrack,kKCharg,kK0};
enum FillType {kSE, kME}; //for single event or event mixing histos fill
Int_t fFillOnlyD0D0bar; // flag to fill mass histogram with D0/D0bar only (0 = fill with both, 1 = fill with D0 only, 2 = fill with D0bar only)
Int_t fIsSelectedCandidate; // selection outcome
Int_t fSys; // fSys=0 -> p-p; fSys=1 ->PbPb
+ Double_t fEtaForCorrel; // cut for D0 eta to enable correlation with associated particles
Bool_t fIsRejectSDDClusters; // flag to reject events with SDD clusters
Bool_t fFillGlobal; // flag to fill global plots (in loops on tracks and V0 for each event)
#include "AliAODv0.h"
#include "AliAODVertex.h"
#include "AliAODMCParticle.h"
+#include "AliAnalysisManager.h"
+#include "AliInputEventHandler.h"
#include "TString.h"
using std::cout;
if(fTrackCutsNames) {delete[] fTrackCutsNames; fTrackCutsNames=0;}
if(fAODvZeroCuts){delete[] fAODvZeroCuts; fAODvZeroCuts=0;}
if(fvZeroCutsNames) {delete[] fvZeroCutsNames; fvZeroCutsNames=0;}
+
}
//--------------------------------------------------------------------------
return;
}
+//--------------------------------------------------------------------------
+void AliHFAssociatedTrackCuts::SetPidAssociated()
+{
+ //setting PidResponse
+ if(fPidObj->GetOldPid()==kFALSE && fPidObj->GetPidResponse()==0x0){
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
+ AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
+ fPidObj->SetPidResponse(pidResp);
+ }
+}
+
//--------------------------------------------------------------------------
void AliHFAssociatedTrackCuts::PrintAll()
{
Bool_t CheckKaonCompatibility(AliAODTrack * track, Bool_t useMc, TClonesArray* mcArray, Int_t method=1);
Bool_t IsKZeroSelected(AliAODv0 *vzero, AliAODVertex *vtx1);
Bool_t *IsMCpartFromHF(Int_t label, TClonesArray*mcArray);
- Bool_t InvMassDstarRejection(AliAODRecoDecayHF2Prong* d, AliAODTrack *track, Int_t hypD0) const;
+ Bool_t InvMassDstarRejection(AliAODRecoDecayHF2Prong* d, AliAODTrack *track, Int_t hypD0) const;
+ void SetPidAssociated();
//getters
Int_t GetMaxNEventsInPool() {return fPoolMaxNEvents;}
return;
}
+ void AddDescription(TString description){fDescription=description;}
+
//setters
//event pool settings
void SetMaxNEventsInPool(Int_t events){fPoolMaxNEvents=events;}
- Bool_t DefineEventPool(); // Definition of the Event pool parameters
+ Bool_t DefineEventPool(); // Definition of the Event pool parameters
Bool_t Initialize(); // function that initlize everything for the analysis
Bool_t ProcessEventPool(); // processes the event pool
Bool_t ProcessAssociatedTracks(Int_t EventLoopIndex); //
Bool_t Correlate(Int_t loopindex); // function that computes the correlations between the trigger particle and the track n. loopindex
Bool_t PoolUpdate();// updates the event pool
Double_t SetCorrectPhiRange(Double_t phi); // sets all the angles in the correct range
-
+ void SetPidAssociated() {fhadcuts->SetPidAssociated();}
+
//getters
AliEventPool* GetPool() {return fPool;}
TObjArray * GetTrackArray(){return fAssociatedTracks;}
-AliAnalysisTaskSED0Correlations *AddTaskD0Correlations(Bool_t readMC=kFALSE, Bool_t mixing=kFALSE, Int_t system=0/*0=pp,1=PbPb*/, Int_t flagD0D0bar=0,
- Float_t minC=0, Float_t maxC=0, TString finDirname="Output", TString cutsfilename="D0toKpiCuts.root",
+AliAnalysisTaskSED0Correlations *AddTaskD0Correlations(Bool_t readMC=kFALSE, Bool_t mixing=kFALSE, Double_t etacorr=1.0, Int_t system=0/*0=pp,1=PbPb*/, Int_t flagD0D0bar=0, Float_t minC=0, Float_t maxC=0, TString finDirname="Output", TString cutsfilename="D0toKpiCuts.root",
TString cutsfilename2="AssocPartCuts.root", TString cutsD0name="D0toKpiCuts", TString cutsTrkname="AssociatedTrkCuts", Bool_t flagAOD049=kFALSE, Int_t standardbins=1, Bool_t stdcuts=kFALSE)
{
//
massD0Task->SetEvMixing(mixing);
massD0Task->SetFillOnlyD0D0bar(flagD0D0bar);
massD0Task->SetSystem(system); //0=pp, 1=PbPb
+ massD0Task->SetEtaForCorrel(etacorr);
//*********************
//correlation settings