,fInvmassCut(0) // no mass
,fSetMassConstraint(kTRUE)
,fSetMassWidthCut(kFALSE)
+ ,fSetMassNonlinear(kFALSE)
,fSetKFpart(kTRUE)
,fNoEvents(0)
,fEMCAccE(0)
,fIncpTMCpho_pi0e_TPC(0)
,fPhoElecPtMC_pi0e_TPC(0)
,fSameElecPtMC_pi0e_TPC(0)
+ ,fIncpTMCpho_eta_TPC(0)
+ ,fPhoElecPtMC_eta_TPC(0)
+ ,fSameElecPtMC_eta_TPC(0)
,CheckNclust(0)
,CheckNits(0)
,Hpi0pTcheck(0)
,fInvmassCut(0) // no mass
,fSetMassConstraint(kTRUE)
,fSetMassWidthCut(kFALSE)
+ ,fSetMassNonlinear(kFALSE)
,fSetKFpart(kTRUE)
,fNoEvents(0)
,fEMCAccE(0)
,fIncpTMCpho_pi0e_TPC(0)
,fPhoElecPtMC_pi0e_TPC(0)
,fSameElecPtMC_pi0e_TPC(0)
+ ,fIncpTMCpho_eta_TPC(0)
+ ,fPhoElecPtMC_eta_TPC(0)
+ ,fSameElecPtMC_eta_TPC(0)
,CheckNclust(0)
,CheckNits(0)
,Hpi0pTcheck(0)
phoval[3] = iHijing;
phoval[4] = mcMompT;
- if((fTPCnSigma >= -1.0 && fTPCnSigma <= 3) && mcele>-1 && mcPho && mcOrgPi0)
+ //if((fTPCnSigma >= -5.0 && fTPCnSigma <= 5) && mcele>-1 && mcPho && mcOrgPi0)
+ if((fTPCnSigma >= -5.0 && fTPCnSigma <= 5) && (mcOrgPi0 || mcOrgEta))
{
if(iHijing==1)mcWeight = 1.0;
- fIncpTMCpho_pi0e_TPC->Fill(phoval,mcWeight);
- if(fFlagPhotonicElec) fPhoElecPtMC_pi0e_TPC->Fill(phoval,mcWeight);
- if(fFlagConvinatElec) fSameElecPtMC_pi0e_TPC->Fill(phoval,mcWeight);
+ if(mcOrgPi0)
+ {
+ fIncpTMCpho_pi0e_TPC->Fill(phoval,mcWeight);
+ if(fFlagPhotonicElec) fPhoElecPtMC_pi0e_TPC->Fill(phoval,mcWeight);
+ if(fFlagConvinatElec) fSameElecPtMC_pi0e_TPC->Fill(phoval,mcWeight);
+ }
+ if(mcOrgEta)
+ {
+ fIncpTMCpho_eta_TPC->Fill(phoval,mcWeight);
+ if(fFlagPhotonicElec) fPhoElecPtMC_eta_TPC->Fill(phoval,mcWeight);
+ if(fFlagConvinatElec) fSameElecPtMC_eta_TPC->Fill(phoval,mcWeight);
+ }
}
//+++++++ E/p cut ++++++++++++++++
fSameElecPtMC_pi0e_TPC = new THnSparseD("fSameElecPtMC_pi0e_TPC", "MC Same-inclusive electron pt pi0->e",5,nBinspho2,minpho2,maxpho2);
fSameElecPtMC_pi0e_TPC->Sumw2();
fOutputList->Add(fSameElecPtMC_pi0e_TPC);
+
+ fIncpTMCpho_eta_TPC = new THnSparseD("fIncpTMCpho_eta_TPC","MC Pho pi0->e pid electro vs. centrality with M20",5,nBinspho2,minpho2,maxpho2);
+ fIncpTMCpho_eta_TPC->Sumw2();
+ fOutputList->Add(fIncpTMCpho_eta_TPC);
+
+ fPhoElecPtMC_eta_TPC = new THnSparseD("fPhoElecPtMC_eta_TPC", "MC Pho-inclusive electron pt with pi0->e",5,nBinspho2,minpho2,maxpho2);
+ fPhoElecPtMC_eta_TPC->Sumw2();
+ fOutputList->Add(fPhoElecPtMC_eta_TPC);
+
+ fSameElecPtMC_eta_TPC = new THnSparseD("fSameElecPtMC_eta_TPC", "MC Same-inclusive electron pt pi0->e",5,nBinspho2,minpho2,maxpho2);
+ fSameElecPtMC_eta_TPC->Sumw2();
+ fOutputList->Add(fSameElecPtMC_eta_TPC);
+
+
//-------------
CheckNclust = new TH1D("CheckNclust","cluster check",200,0,200);
const AliESDVertex *pVtx = fESD->GetPrimaryVertex();
Double_t bfield = fESD->GetMagneticField();
+ Double_t emass = 0.51*0.001; // (0.51 MeV)
double ptEle = track->Pt(); //add
if(ibgevent==0 && w > 0.0)
AliKFParticle::SetField(bfield);
AliKFParticle ge1(*track, fPDGe1);
AliKFParticle ge2(*trackAsso, fPDGe2);
+
+ if(fSetMassNonlinear)
+ {
+ ge1.SetNonlinearMassConstraint(emass);
+ ge2.SetNonlinearMassConstraint(emass);
+ }
+
AliKFParticle recg(ge1, ge2);
+ /*
// vertex
AliKFVertex primV(*pVtx);
primV += recg;
primV -= ge1;
primV -= ge2;
recg.SetProductionVertex(primV);
-
+ */
+
// check chi2
if(recg.GetNDF()<1) continue;
Double_t chi2recg = recg.GetChi2()/recg.GetNDF();
void SetInvariantMassCut (Double_t invmass) {fInvmassCut = invmass;};
void SetMassConstraint (Bool_t MassConstraint) { fSetMassConstraint = MassConstraint; };
void SetMassWidthCut (Bool_t MassWidthCut) { fSetMassWidthCut = MassWidthCut; };
+ void SetMassNonlinear (Bool_t MassNonlinear) { fSetMassNonlinear = MassNonlinear; };
void SetMassCalMethod (Bool_t KFpart) { fSetKFpart = KFpart; };
void SetQAHist (int qahist) {fqahist = qahist;};
AliHFEpid *GetPID() const { return fPID; }
Double_t fInvmassCut; //invariant mass cut value
Bool_t fSetMassConstraint; // Set mass constraint
Bool_t fSetMassWidthCut; // Set mass constraint
+ Bool_t fSetMassNonlinear; // Set mass constraint
Bool_t fSetKFpart; // Set mass constraint
int ftriggers[48][60];//!
THnSparseD *fIncpTMCpho_pi0e_TPC; //! MC HFE pid electron vs centrality
THnSparseD *fPhoElecPtMC_pi0e_TPC; //! Pho inclusive ele pt
THnSparseD *fSameElecPtMC_pi0e_TPC; //! Same inclusive ele pt
+ THnSparseD *fIncpTMCpho_eta_TPC; //! MC HFE pid electron vs centrality
+ THnSparseD *fPhoElecPtMC_eta_TPC; //! Pho inclusive ele pt
+ THnSparseD *fSameElecPtMC_eta_TPC; //! Same inclusive ele pt
TH1D *CheckNclust;
TH1D *CheckNits;
THnSparseD *Hpi0pTcheck;
-AliAnalysisTask *AddTaskHFECal(Bool_t MassConst, Bool_t MassWidthCut)
+AliAnalysisTask *AddTaskHFECal(Bool_t MassConst, Bool_t MassWidthCut, Bool_t MassNonlinear)
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
//analysis task
gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/PbPb/ConfigHFECal.C");
- AliAnalysisTaskHFECal *hfetaskCent = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,0.5,0.1,masscut,-5);
- AliAnalysisTaskHFECal *hfetaskTrig= ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,0.5,0.1,masscut,-5);
- AliAnalysisTaskHFECal *hfetaskTrig2= ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,0.5,0.1,masscut,-5);
+ AliAnalysisTaskHFECal *hfetaskCent = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,MassNonlinear,0.5,0.1,masscut,-5);
+ AliAnalysisTaskHFECal *hfetaskTrig= ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,MassNonlinear,0.5,0.1,masscut,-5);
+ AliAnalysisTaskHFECal *hfetaskTrig2= ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,MassNonlinear,0.5,0.1,masscut,-5);
mgr->AddTask(hfetaskCent);
mgr->AddTask(hfetaskTrig);
//if(MCthere)
//{
//MB trigger
- AliAnalysisTaskHFECal *hfetaskMB = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,0.5,0.1,masscut,-5);
+ AliAnalysisTaskHFECal *hfetaskMB = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,MassNonlinear,0.5,0.1,masscut,-5);
mgr->AddTask(hfetaskMB);
hfetaskMB->SelectCollisionCandidates(AliVEvent::kMB);
-AliAnalysisTask *AddTaskHFECalPbPbSys(Bool_t MassConst, Bool_t MassWidthCut, Bool_t MassCal, Double_t asspTCut, Double_t angleCut, Double_t MassCut, Double_t NsigCut,TString ID="phoSys0")
+AliAnalysisTask *AddTaskHFECalPbPbSys(Bool_t MassConst, Bool_t MassWidthCut, Bool_t MassCal, Bool MassNonlinear ,Double_t asspTCut, Double_t angleCut, Double_t MassCut, Double_t NsigCut,TString ID="phoSys0")
{
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
if (!mgr) {
//analysis task
gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/PbPb/ConfigHFECal.C");
- AliAnalysisTaskHFECal *hfetask = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,asspTCut,angleCut,MassCut,NsigCut);
+ AliAnalysisTaskHFECal *hfetask = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,MassNonlinear,asspTCut,angleCut,MassCut,NsigCut);
mgr->AddTask(hfetask);
// semi-central
hfetask->SelectCollisionCandidates(AliVEvent::kSemiCentral);
mgr->ConnectOutput(hfetask, 1, coutput1);
//trigger
- AliAnalysisTaskHFECal *hfetaskTrig = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,asspTCut,angleCut,MassCut,NsigCut);
+ AliAnalysisTaskHFECal *hfetaskTrig = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,MassNonlinear,asspTCut,angleCut,MassCut,NsigCut);
mgr->AddTask(hfetaskTrig);
hfetaskTrig->SelectCollisionCandidates(AliVEvent::kEMCEGA);
TString containerName2 = mgr->GetCommonFileName();
//MB trigger
- AliAnalysisTaskHFECal *hfetaskMB = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,asspTCut,angleCut,MassCut,NsigCut);
+ AliAnalysisTaskHFECal *hfetaskMB = ConfigHFECal(MCthere,MassConst,MassWidthCut,MassCal,MassNonlinear,asspTCut,angleCut,MassCut,NsigCut);
mgr->AddTask(hfetaskMB);
hfetaskMB->SelectCollisionCandidates(AliVEvent::kMB);
TString containerName4 = mgr->GetCommonFileName();
-AliAnalysisTaskHFECal* ConfigHFECal(Bool_t useMC,Bool_t MassConst,Bool_t MassWidthCut,Bool_t MassCal,Double_t asspTCut,Double_t angleCut,Double_t MassCut, Double_t NsigCut){\r
+AliAnalysisTaskHFECal* ConfigHFECal(Bool_t useMC,Bool_t MassConst,Bool_t MassWidthCut,Bool_t MassCal,Bool_t MassNonlinear,Double_t asspTCut,Double_t angleCut,Double_t MassCut, Double_t NsigCut){\r
//\r
// HFE standard task configuration\r
//\r
task->SetHFECuts(hfecuts);\r
task->SetMassConstraint(MassConst);\r
task->SetMassWidthCut(MassWidthCut);\r
+ task->SetMassNonlinear(MassNonlinear);\r
//Double_t masscut = 0.05;\r
//if(!MassConst)masscut = 0.1;\r
Double_t masscut = MassCut;\r