,fHistCentrDistr(0x0)
,fCentralityNoPassForFlattening(0)
,fptminAsso(0)
+,fSparsephipsiULS(0)
+,fSparsephipsiLS(0)
+,fSparseMassULS(0)
+,fSparseMassLS(0)
+,fAssoTPCCluster(0)
+,fAssoITSRefit(0)
{
//Named constructor
,fHistCentrDistr(0x0)
,fCentralityNoPassForFlattening(0)
,fptminAsso(0)
+,fSparsephipsiULS(0)
+,fSparsephipsiLS(0)
+,fSparseMassULS(0)
+,fSparseMassLS(0)
+,fAssoTPCCluster(0)
+,fAssoITSRefit(0)
{
//Default constructor
fPID = new AliHFEpid("hfePid");
//=========================================================================================================
//----------------------Selection and Flow of Photonic Electrons-----------------------------
Bool_t fFlagPhotonicElec = kFALSE;
- SelectPhotonicElectron(iTracks,track,fFlagPhotonicElec);
+ SelectPhotonicElectron(iTracks,track,fTPCnSigma,evPlAngV0,fFlagPhotonicElec);
if(fFlagPhotonicElec){fPhotoElecPt->Fill(pt);}
// Semi inclusive electron
if(!fFlagPhotonicElec){fSemiInclElecPt->Fill(pt);}
//----------hfe end---------
}
//_________________________________________
-void AliAnalysisTaskFlowITSTPCTOFQCSP::SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track, Bool_t &fFlagPhotonicElec)
+void AliAnalysisTaskFlowITSTPCTOFQCSP::SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track,Float_t fTPCnSigma,Double_t evPlAngV0, Bool_t &fFlagPhotonicElec)
{
//Identify non-heavy flavour electrons using Invariant mass method
}
// if(!track->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)) continue; // TESTBIT FOR AOD double Counting
if(!trackAsso->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
- if((!(trackAsso->GetStatus()&AliESDtrack::kITSrefit)|| (!(trackAsso->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+
+ if(fAssoITSRefit){
+ if(!(trackAsso->GetStatus()&AliESDtrack::kITSrefit)) continue;
+ }
+
+ if(!(trackAsso->GetStatus()&AliESDtrack::kTPCrefit)) continue;
+
+// if((!(trackAsso->GetStatus()&AliESDtrack::kITSrefit)|| (!(trackAsso->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
if(jTracks == itrack) continue;
nsigma = fPID->GetPIDResponse() ? fPID->GetPIDResponse()->NumberOfSigmasTPC(trackAsso, AliPID::kElectron) : 1000;
- if(trackAsso->GetTPCNcls() < 80) continue;
+ //if(trackAsso->GetTPCNcls() < 80) continue;
+ if(trackAsso->GetTPCNcls() < fAssoTPCCluster) continue;
if(nsigma < -3 || nsigma > 3) continue;
if(trackAsso->Eta()<-0.9 || trackAsso->Eta()>0.9) continue;
if(ptAsso < fptminAsso) continue;
if(fFlagLS) fInvmassLS1->Fill(mass);
if(fFlagULS) fInvmassULS1->Fill(mass);
+ if(fFlagULS){
+ Double_t MassSparseULS[3] = {
+ track->Pt(),
+ mass
+ };
+ fSparseMassULS->Fill(MassSparseULS);
+ }
+ if(fFlagLS){
+ Double_t MassSparseLS[3] = {
+ track->Pt(),
+ mass
+ };
+ fSparseMassLS->Fill(MassSparseLS);
+ }
+
+
if(mass<fInvmassCut){
if(fFlagULS){fULSElecPt->Fill(track->Pt());}
if(fFlagLS){fLSElecPt->Fill(track->Pt());}
}
+
+ Double_t phi = track->Phi();
+ Float_t DeltaPhi_eEP = TVector2::Phi_0_2pi(phi - evPlAngV0);
+ if(DeltaPhi_eEP > TMath::Pi()) {DeltaPhi_eEP = DeltaPhi_eEP - TMath::Pi();}
+
+
+ if(mass<fInvmassCut){
+ if(fFlagULS){
+ Double_t ulsSparse[3] = {
+ track->Pt(),
+ fTPCnSigma,
+ DeltaPhi_eEP
+ };
+ fSparsephipsiULS->Fill(ulsSparse);
+ }
+ if(fFlagLS){
+ Double_t lsSparse[3] = {
+ track->Pt(),
+ fTPCnSigma,
+ DeltaPhi_eEP
+ };
+ fSparsephipsiLS->Fill(lsSparse);
+ }
+ }
+
+
+
if(mass<fInvmassCut && fFlagULS && !flagPhotonicElec){
flagPhotonicElec = kTRUE;
}
fQAPidSparse->GetAxis(2)->SetTitle("tpcnsigma");
fOutputList->Add(fQAPidSparse);
//===========================================================================
+
+
+
+ Int_t binsphipsi[3] = { 100, 150, 6};
+ Double_t xminphipsi[3] = { 0., -15, 0};
+ Double_t xmaxphipsi[3] = { 5., 15, TMath::Pi()};
+ fSparsephipsiULS = new THnSparseF("fSparsephipsiULS", "pt:tpcnsigma:DeltaPhiULS", 3, binsphipsi, xminphipsi, xmaxphipsi);
+ fSparsephipsiULS->GetAxis(0)->SetTitle("pt (Gev/c)");
+ fSparsephipsiULS->GetAxis(1)->SetTitle("tpcnsigma");
+ fSparsephipsiULS->GetAxis(2)->SetTitle("DeltaPhiULS");
+ fOutputList->Add(fSparsephipsiULS);
+
+ fSparsephipsiLS = new THnSparseF("fSparsephipsiLS", "pt:tpcnsigma:DeltaPhiLS", 3, binsphipsi, xminphipsi, xmaxphipsi);
+ fSparsephipsiLS->GetAxis(0)->SetTitle("pt (Gev/c)");
+ fSparsephipsiLS->GetAxis(1)->SetTitle("tpcnsigma");
+ fSparsephipsiLS->GetAxis(2)->SetTitle("DeltaPhiLS");
+ fOutputList->Add(fSparsephipsiLS);
+
+
+ Int_t binsmass[2] = { 100, 200};
+ Double_t xminmass[2] = { 0., 0};
+ Double_t xmaxmass[2] = { 5., 1.};
+ fSparseMassULS = new THnSparseF("fSparseMassULS", "pt:mass (GeV/c^{2})", 2, binsmass, xminmass, xmaxmass);
+ fSparseMassULS->GetAxis(0)->SetTitle("pt (Gev/c)");
+ fSparseMassULS->GetAxis(1)->SetTitle("mass");
+ fOutputList->Add(fSparseMassULS);
+
+ fSparseMassLS = new THnSparseF("fSparseMassLS", "pt:mass (GeV/c^{2})", 2, binsmass, xminmass, xmaxmass);
+ fSparseMassLS->GetAxis(0)->SetTitle("pt (Gev/c)");
+ fSparseMassLS->GetAxis(1)->SetTitle("mass");
+ fOutputList->Add(fSparseMassLS);
+
+
PostData(1,fOutputList);
// create and post flowevent
fFlowEvent = new AliFlowEvent(10000);
void SetEnableDebugMode() {fDebug = kTRUE; };
void SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod); //select centrality
void CheckCentrality(AliAODEvent *event,Bool_t ¢ralitypass); //to use only events with the correct centrality....
- void SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track, Bool_t &fFlagPhotonicElec);
+ void SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track,Float_t fTPCnSigma,Double_t evPlAngV0, Bool_t &fFlagPhotonicElec);
void SelectPhotonicElectronMethod(Bool_t dca){fDCA = dca;}
void SetInvariantMassCut(Double_t invmass) {fInvmassCut = invmass;};
void SetPtMinAssoCut(Double_t ptminimumasso) {fptminAsso = ptminimumasso;};
void SetMultCorrelationCut(Bool_t multcut) {fMultCut = multcut;};
void SetHistoForCentralityFlattening(TH1F *h,Double_t minCentr,Double_t maxCentr,Double_t centrRef=0.,Int_t switchTRand=0);
Bool_t IsEventSelectedForCentrFlattening(Float_t centvalue);
-
+ void SetAssoITSRefit(Bool_t itsref) {fAssoITSRefit = itsref;};
+ void SetAssoTPCCluster(Int_t tpc_clust) {fAssoTPCCluster = tpc_clust;};
+
AliHFEpid *GetPID() const { return fPID; };
TH1F *fHistCentrDistr;//-> isto for Centr Flat
TH1F *fCentralityNoPassForFlattening; //!QA histogram of events that do not pass centrality cut for flattening
Double_t fptminAsso;//minassopt
+ THnSparseF *fSparsephipsiULS;//! ULSSparse
+ THnSparseF *fSparsephipsiLS;//! LSSparse
+ THnSparseF *fSparseMassULS;//!ssss
+ THnSparseF *fSparseMassLS;//!ssssss
+ Int_t fAssoTPCCluster;//asso tpc cluster
+ Bool_t fAssoITSRefit;//asso its refit
+
AliAnalysisTaskFlowITSTPCTOFQCSP(const AliAnalysisTaskFlowITSTPCTOFQCSP&); // not implemented
AliAnalysisTaskFlowITSTPCTOFQCSP& operator=(const AliAnalysisTaskFlowITSTPCTOFQCSP&); // not implemented
,fCentralityNoPassForFlattening(0)
,fInvmassLS1highpt(0)
,fInvmassULS1highpt(0)
+,fSparsephipsiULS(0)
+,fSparsephipsiLS(0)
+,fSparseMassULS(0)
+,fSparseMassLS(0)
{
//Named constructor
,fCentralityNoPassForFlattening(0)
,fInvmassLS1highpt(0)
,fInvmassULS1highpt(0)
+,fSparsephipsiULS(0)
+,fSparsephipsiLS(0)
+,fSparseMassULS(0)
+,fSparseMassLS(0)
{
//Default constructor
fPID = new AliHFEpid("hfePid");
if(!fDCA){
//----------------------Selection of Photonic Electrons KFParticle-----------------------------
Bool_t fFlagPhotonicElec = kFALSE;
- SelectPhotonicElectron(iTracks,track,fFlagPhotonicElec);
+ SelectPhotonicElectron(iTracks,track,fEovP, evPlAngV0, fFlagPhotonicElec);
if(fFlagPhotonicElec){fPhotoElecPt->Fill(pt);}
// Semi inclusive electron
if(!fFlagPhotonicElec){fSemiInclElecPt->Fill(pt);}
//----------hfe end---------
}
//_________________________________________
-void AliAnalysisTaskFlowTPCEMCalQCSP::SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track, Bool_t &fFlagPhotonicElec)
+void AliAnalysisTaskFlowTPCEMCalQCSP::SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track,Double_t fEovP,Double_t evPlAngV0, Bool_t &fFlagPhotonicElec)
{
//Identify non-heavy flavour electrons using Invariant mass method KF
if(fFlagLS) fInvmassLS1->Fill(mass);
if(fFlagULS) fInvmassULS1->Fill(mass);
+ if(fFlagULS){
+ Double_t MassSparseULS[3] = {
+ track->Pt(),
+ mass
+ };
+ fSparseMassULS->Fill(MassSparseULS);
+ }
+ if(fFlagLS){
+ Double_t MassSparseLS[3] = {
+ track->Pt(),
+ mass
+ };
+ fSparseMassLS->Fill(MassSparseLS);
+ }
+
+
if(ptcutonmasshighpt >= 8.){
if(fFlagLS) fInvmassLS1highpt->Fill(mass);
if(fFlagULS) fInvmassULS1highpt->Fill(mass);
if(fFlagLS){fLSElecPt->Fill(track->Pt());}
}
+
+
+ Double_t phi = track->Phi();
+ Float_t DeltaPhi_eEP = TVector2::Phi_0_2pi(phi - evPlAngV0);
+ if(DeltaPhi_eEP > TMath::Pi()) {DeltaPhi_eEP = DeltaPhi_eEP - TMath::Pi();}
+
+
+ if(mass<fInvmassCut){
+ if(fFlagULS){
+ Double_t ulsSparse[3] = {
+ track->Pt(),
+ fEovP,
+ DeltaPhi_eEP
+ };
+ fSparsephipsiULS->Fill(ulsSparse);
+ }
+ if(fFlagLS){
+ Double_t lsSparse[3] = {
+ track->Pt(),
+ fEovP,
+ DeltaPhi_eEP
+ };
+ fSparsephipsiLS->Fill(lsSparse);
+ }
+ }
+
+
+
if(mass<fInvmassCut && fFlagULS && !flagPhotonicElec){
flagPhotonicElec = kTRUE;
}
}
//----------------------------------------------------------------------------
+
+ Int_t binsphipsi[3] = { 100, 200, 6};
+ Double_t xminphipsi[3] = { 0., 0, 0};
+ Double_t xmaxphipsi[3] = { 10., 2, TMath::Pi()};
+ fSparsephipsiULS = new THnSparseF("fSparsephipsiULS", "pt:eop:DeltaPhiULS", 3, binsphipsi, xminphipsi, xmaxphipsi);
+ fSparsephipsiULS->GetAxis(0)->SetTitle("pt (Gev/c)");
+ fSparsephipsiULS->GetAxis(1)->SetTitle("eop");
+ fSparsephipsiULS->GetAxis(2)->SetTitle("DeltaPhiULS");
+ fOutputList->Add(fSparsephipsiULS);
+
+ fSparsephipsiLS = new THnSparseF("fSparsephipsiLS", "pt:eop:DeltaPhiLS", 3, binsphipsi, xminphipsi, xmaxphipsi);
+ fSparsephipsiLS->GetAxis(0)->SetTitle("pt (Gev/c)");
+ fSparsephipsiLS->GetAxis(1)->SetTitle("eop");
+ fSparsephipsiLS->GetAxis(2)->SetTitle("DeltaPhiLS");
+ fOutputList->Add(fSparsephipsiLS);
+
+ Int_t binsmass[2] = { 100, 200};
+ Double_t xminmass[2] = { 0., 0};
+ Double_t xmaxmass[2] = { 10., 1.};
+ fSparseMassULS = new THnSparseF("fSparseMassULS", "pt:mass (GeV/c^{2})", 2, binsmass, xminmass, xmaxmass);
+ fSparseMassULS->GetAxis(0)->SetTitle("pt (Gev/c)");
+ fSparseMassULS->GetAxis(1)->SetTitle("mass");
+ fOutputList->Add(fSparseMassULS);
+
+ fSparseMassLS = new THnSparseF("fSparseMassLS", "pt:mass (GeV/c^{2})", 2, binsmass, xminmass, xmaxmass);
+ fSparseMassLS->GetAxis(0)->SetTitle("pt (Gev/c)");
+ fSparseMassLS->GetAxis(1)->SetTitle("mass");
+ fOutputList->Add(fSparseMassLS);
+
+
+
PostData(1,fOutputList);
// create and post flowevent
fFlowEvent = new AliFlowEvent(10000);
void SetEnableDebugMode() {fDebug = kTRUE; };
void SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod); //select centrality
void CheckCentrality(AliAODEvent *event,Bool_t ¢ralitypass); //to use only events with the correct centrality....
- void SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track, Bool_t &fFlagPhotonicElec);
+ void SelectPhotonicElectron(Int_t itrack,const AliAODTrack *track, Double_t eopinc, Double_t evPlAnglV0, Bool_t &fFlagPhotonicElec);
void SetInvariantMassCut(Double_t invmass) {fInvmassCut = invmass;};
void SetpTCuttrack(Double_t ptcut) {fpTCut = ptcut;};
void SetTrigger(Int_t trig) {fTrigger = trig;};
TH1F *fCentralityNoPassForFlattening; //! QA histogram of events that do not pass centrality cut for flattening
TH1F *fInvmassLS1highpt; //!LS Invmass for all rec par high pt
TH1F *fInvmassULS1highpt;//!ULS Invmass for all rec par high pt
-
+ THnSparseF *fSparsephipsiULS;//!ssss
+ THnSparseF *fSparsephipsiLS;//!ssss
+ THnSparseF *fSparseMassULS;//!ssss
+ THnSparseF *fSparseMassLS;//!ssssss
AliAnalysisTaskFlowTPCEMCalQCSP(const AliAnalysisTaskFlowTPCEMCalQCSP&); // not implemented
,fLSmatches(NULL)
,fHnsigmaITS(NULL)
,fWeightsSource(NULL)
+ ,fIncElectronRadius(NULL)
+ ,fRecElectronRadius(NULL)
// ,fUSignAngle (NULL)
// ,fLSignAngle (NULL)
{
// default constructor
}
//___________________________________________________________________
-AliHFEV0taginfo::AliHFEV0tag::AliHFEV0tag(Int_t TrackID, AliPID::EParticleType Pinfo, Double_t fProdR):
+AliHFEV0taginfo::AliHFEV0tag::AliHFEV0tag(Int_t TrackID, AliPID::EParticleType Pinfo, Double_t ProdR):
TObject(),
fTrackID(TrackID),
fPinfo(Pinfo),
- fProdR(fProdR)
+ fProdR(ProdR)
{
}
class AliHFEV0tag: public TObject{
public:
AliHFEV0tag();
- AliHFEV0tag(Int_t TrackID, AliPID::EParticleType Pinfo, Double_t prodR);
+ AliHFEV0tag(Int_t TrackID, AliPID::EParticleType Pinfo, Double_t ProdR);
AliHFEV0tag(const AliHFEV0tag &ref);
AliHFEV0tag &operator=(const AliHFEV0tag &ref);
virtual ~AliHFEV0tag();
Int_t minTPCCluster,
Int_t TPCS,
AliHFEextraCuts::ITSPixel_t pixel,
+ Int_t TPCClusterforAsso = 80,
+ Bool_t AssoITSref = kTRUE,
Double_t ptminassocut = 0.25,
Bool_t PhotonicElectronDCA = kFALSE,
// Bool_t QaPidSparse = kFALSE,
taskHFE->SetOpeningAngleCut(op_angle_cut);
taskHFE->SetMultCorrelationCut(multCorrcut);
taskHFE->SetPtMinAssoCut(ptminassocut);
-
+ taskHFE->SetAssoTPCCluster(TPCClusterforAsso);
+ taskHFE->SetAssoITSRefit(AssoITSref);
//set RP cuts for flow package analysis
cutsRP = new AliFlowTrackCuts(Form("RFPcuts%s",uniqueID));
if(!cutsRP) {