#include "AliPID.h"
#include "AliAODpidUtil.h"
+#include "AliAnalysisUtils.h"
ClassImp(AliFemtoEventReaderAOD)
fMagFieldSign(1),
fisEPVZ(kTRUE),
fpA2013(kFALSE),
+ fisPileUp(kFALSE),
+ fMVPlp(kFALSE),
fDCAglobalTrack(kFALSE),
fFlatCent(kFALSE)
{
fMagFieldSign(1),
fisEPVZ(kTRUE),
fpA2013(kFALSE),
+ fisPileUp(kFALSE),
+ fMVPlp(kFALSE),
fDCAglobalTrack(kFALSE),
fFlatCent(kFALSE)
{
fEstEventMult = aReader.fEstEventMult;
fUsePreCent = aReader.fUsePreCent;
fpA2013 = aReader.fpA2013;
+ fisPileUp = aReader.fisPileUp;
+ fMVPlp = aReader.fMVPlp;
fDCAglobalTrack = aReader.fDCAglobalTrack;
}
fUsePreCent = aReader.fUsePreCent;
fEstEventMult = aReader.fEstEventMult;
fpA2013 = aReader.fpA2013;
+ fisPileUp = aReader.fisPileUp;
+ fMVPlp = aReader.fMVPlp;
fDCAglobalTrack = aReader.fDCAglobalTrack;
fFlatCent= aReader.fFlatCent;
}
}
+ //AliAnalysisUtils
+ if(fisPileUp||fpA2013)
+ {
+ AliAnalysisUtils *anaUtil=new AliAnalysisUtils();
+ if(fpA2013)
+ if(anaUtil->IsVertexSelected2013pA(fEvent)==kFALSE) return; //Vertex rejection for pA analysis.
+ if(fMVPlp) anaUtil->SetUseMVPlpSelection(kTRUE);
+ else anaUtil->SetUseMVPlpSelection(kFALSE);
+ if(fisPileUp)
+ if(anaUtil->IsPileUpEvent(fEvent)) return; //Pile-up rejection.
+ delete anaUtil;
+ }
+
+
// Primary Vertex position
- // double fV1[3];
- if(fpA2013)
- {
- const AliAODVertex* trkVtx = fEvent->GetPrimaryVertex();
- if (!trkVtx || trkVtx->GetNContributors()<=0) return;
- TString vtxTtl = trkVtx->GetTitle();
- if (!vtxTtl.Contains("VertexerTracks")) return;
- Float_t zvtx = trkVtx->GetZ();
- const AliAODVertex* spdVtx = fEvent->GetPrimaryVertexSPD();
- if (spdVtx->GetNContributors()<=0) return;
- TString vtxTyp = spdVtx->GetTitle();
- Double_t cov[6]={0};
- spdVtx->GetCovarianceMatrix(cov);
- Double_t zRes = TMath::Sqrt(cov[5]);
- if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return;
- if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5) return;
-
- if (TMath::Abs(zvtx) > 10) return;
- }
- fEvent->GetPrimaryVertex()->GetPosition(fV1);
+ const AliAODVertex* aodvertex = (AliAODVertex*) fEvent->GetPrimaryVertex();
+ if(!aodvertex || aodvertex->GetNContributors() < 1) return; //Bad vertex, skip event.
+ aodvertex->GetPosition(fV1);
AliFmThreeVectorF vertex(fV1[0],fV1[1],fV1[2]);
tEvent->SetPrimVertPos(vertex);
//starting to reading tracks
int nofTracks=0; //number of reconstructed tracks in event
- // Check to see whether the additional info exists
- // if (fPWG2AODTracks)
- // nofTracks=fPWG2AODTracks->GetEntries();
- // else
nofTracks=fEvent->GetNumberOfTracks();
AliEventplane *ep = fEvent->GetEventplane();
//counting particles to set multiplicity
if(fEstEventMult==kGlobalCount){
- double impact[2];
- double covimpact[3];
- AliAODTrack* trk_clone = (AliAODTrack*)aodtrack->Clone("trk_clone");
- if (trk_clone->PropagateToDCA(fEvent->GetPrimaryVertex(),fEvent->GetMagneticField(),10000,impact,covimpact)) {
- if(impact[0]<0.2 && TMath::Abs(impact[1]+fV1[2])<2.0)
- //if (aodtrack->IsPrimaryCandidate()) //? instead of kinks?
- if (aodtrack->Chi2perNDF() < 4.0)
- if (aodtrack->Pt() > 0.15 && aodtrack->Pt() < 20)
- if (aodtrack->GetTPCNcls() > 70)
- if (aodtrack->Eta() < 0.8)
- tNormMult++;
- }
+ AliAODTrack* trk_clone = (AliAODTrack*)aodtrack->Clone("trk_clone"); //no DCA cut for global count
+ //if (aodtrack->IsPrimaryCandidate()) //? instead of kinks?
+ if (aodtrack->Chi2perNDF() < 4.0)
+ if (aodtrack->Pt() > 0.15 && aodtrack->Pt() < 20)
+ if (aodtrack->GetTPCNcls() > 70)
+ if (aodtrack->Eta() < 0.8)
+ tNormMult++;
delete trk_clone;
}
fpA2013 = pa2013;
}
+void AliFemtoEventReaderAOD::SetUseMVPlpSelection(Bool_t mvplp)
+{
+ fMVPlp = mvplp;
+}
+
+void AliFemtoEventReaderAOD::SetIsPileUpEvent(Bool_t ispileup)
+{
+ fisPileUp = ispileup;
+}
+
+
+
void AliFemtoEventReaderAOD::SetDCAglobalTrack(Bool_t dcagt)
{
fDCAglobalTrack = dcagt;
void SetEPVZERO(Bool_t);
void GetGlobalPositionAtGlobalRadiiThroughTPC(AliAODTrack *track, Float_t bfield, Float_t globalPositionsAtRadii[9][3]);
void SetUseMultiplicity(EstEventMult aType);
- void SetpA2013(Bool_t pa2013);
+ void SetpA2013(Bool_t pa2013); //set vertex configuration for pA (2013): IsVertexSelected2013pA
+ void SetUseMVPlpSelection(Bool_t mvplp);
+ void SetIsPileUpEvent(Bool_t ispileup);
void SetDCAglobalTrack(Bool_t dcagt);
bool RejectEventCentFlat(float MagField, float CentPercent);
int fMagFieldSign; // Magnetic field sign
Bool_t fisEPVZ; // to get event plane angle from VZERO
Bool_t fpA2013; // analysis on pA 2013 data
+ Bool_t fisPileUp; //pile up rejection on?
+ Bool_t fMVPlp; //multi-vertex pileup rejection?
Bool_t fDCAglobalTrack; // to get DCA from global tracks instead of TPC-only
bool fFlatCent;
#include "AliFemtoEvent.h"
#include "AliFemtoModelHiddenInfo.h"
#include "AliPID.h"
+#include "AliAnalysisUtils.h"
ClassImp(AliFemtoEventReaderESDChain)
fIsPidOwner(0),
fReadV0(0),
fMagFieldSign(0),
- fpA2013(kFALSE)
+ fpA2013(kFALSE),
+ fisPileUp(kFALSE),
+ fMVPlp(kFALSE)
{
//constructor with 0 parameters , look at default settings
// fClusterPerPadrow = (list<Int_t> **) malloc(sizeof(list<Int_t> *) * AliESDfriendTrack::kMaxTPCcluster);
fIsPidOwner(0),
fReadV0(0),
fMagFieldSign(0),
- fpA2013(kFALSE)
+ fpA2013(kFALSE),
+ fisPileUp(kFALSE),
+ fMVPlp(kFALSE)
{
// Copy constructor
fConstrained = aReader.fConstrained;
fReadV0 = aReader.fReadV0;
fMagFieldSign = aReader.fMagFieldSign;
fpA2013 = aReader.fpA2013;
-
+ fisPileUp = aReader.fisPileUp;
+ fMVPlp = aReader.fMVPlp;
// fEventFriend = aReader.fEventFriend;
// fClusterPerPadrow = (list<Int_t> **) malloc(sizeof(list<Int_t> *) * AliESDfriendTrack::kMaxTPCcluster);
// for (int tPad=0; tPad<AliESDfriendTrack::kMaxTPCcluster; tPad++) {
fReadV0 = aReader.fReadV0;
fMagFieldSign = aReader.fMagFieldSign;
fpA2013 = aReader.fpA2013;
+ fisPileUp = aReader.fisPileUp;
+ fMVPlp = aReader.fMVPlp;
// fEventFriend = aReader.fEventFriend;
// if (fClusterPerPadrow) {
double fV1[3];
double fVCov[6];
- if(fpA2013)
+ //AliAnalysisUtils
+ if(fisPileUp||fpA2013)
{
- const AliESDVertex* trkVtx = fEvent->GetPrimaryVertex();
- if (!trkVtx || trkVtx->GetNContributors()<=0) return;
- TString vtxTtl = trkVtx->GetTitle();
- if (!vtxTtl.Contains("VertexerTracks")) return;
- Float_t zvtx = trkVtx->GetZ();
- const AliESDVertex* spdVtx = fEvent->GetVertex();
- if (spdVtx->GetNContributors()<=0) return;
- TString vtxTyp = spdVtx->GetTitle();
- Double_t cov[6]={0};
- spdVtx->GetCovarianceMatrix(cov);
- Double_t zRes = TMath::Sqrt(cov[5]);
- if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return;
- if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5) return;
-
- if (TMath::Abs(zvtx) > 10) return;
+ AliAnalysisUtils *anaUtil=new AliAnalysisUtils();
+ if(fpA2013)
+ if(anaUtil->IsVertexSelected2013pA(fEvent)==kFALSE) return; //Vertex rejection for pA analysis.
+ if(fMVPlp) anaUtil->SetUseMVPlpSelection(kTRUE);
+ else anaUtil->SetUseMVPlpSelection(kFALSE);
+ if(fisPileUp)
+ if(anaUtil->IsPileUpEvent(fEvent)) return; //Pile-up rejection.
+ delete anaUtil;
}
+
+
if (fUseTPCOnly) {
- fEvent->GetPrimaryVertexTPC()->GetXYZ(fV1);
- fEvent->GetPrimaryVertexTPC()->GetCovMatrix(fVCov);
- if (!fEvent->GetPrimaryVertexTPC()->GetStatus())
+ const AliESDVertex* esdvertex = (AliESDVertex*) fEvent->GetPrimaryVertexTPC();
+ if(!esdvertex || esdvertex->GetNContributors() < 1) return; //Bad vertex, skip event.
+
+ esdvertex->GetXYZ(fV1);
+ esdvertex->GetCovMatrix(fVCov);
+ if (!esdvertex->GetStatus())
fVCov[4] = -1001.0;
}
else {
- fEvent->GetPrimaryVertex()->GetXYZ(fV1);
- fEvent->GetPrimaryVertex()->GetCovMatrix(fVCov);
- if (!fEvent->GetPrimaryVertex()->GetStatus())
+ const AliESDVertex* esdvertex = (AliESDVertex*) fEvent->GetPrimaryVertex();
+ if(!esdvertex || esdvertex->GetNContributors() < 1) return; //Bad vertex, skip event.
+
+ esdvertex->GetXYZ(fV1);
+ esdvertex->GetCovMatrix(fVCov);
+ if (!esdvertex->GetStatus())
fVCov[4] = -1001.0;
}
{
fpA2013 = pA2013;
}
+
+void AliFemtoEventReaderESDChain::SetUseMVPlpSelection(Bool_t mvplp)
+{
+ fMVPlp = mvplp;
+}
+
+void AliFemtoEventReaderESDChain::SetIsPileUpEvent(Bool_t ispileup)
+{
+ fisPileUp = ispileup;
+}
void CopyESDtoFemtoEvent(AliFemtoEvent *hbtEvent);
void SetpA2013(Bool_t pa2013);
+ void SetUseMVPlpSelection(Bool_t mvplp);
+ void SetIsPileUpEvent(Bool_t ispileup);
+
protected:
private:
int fMagFieldSign;
Bool_t fpA2013;
+ Bool_t fisPileUp;
+ Bool_t fMVPlp;
+
#ifdef __ROOT__
ClassDef(AliFemtoEventReaderESDChain, 1)