# SHLIBS - Shared Libraries and objects for linking (Executables only) #
#--------------------------------------------------------------------------------#
-set ( SRCS FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityKTPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityTPCEntranceSepPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoKKTrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoTPCInnerCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoChi2CorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnSource.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnDEtaDPhi.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelBPLCMSCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelGausRinvFreezeOutGenerator.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnTrueQ.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnNonIdDR.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctn3DSpherical.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctn3DLCMSSpherical.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticleMomRes.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelAllHiddenInfo.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorTrackTPCchiNdof.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQATrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQAEventCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorTrackTPCncls.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityTPCEntranceSepQAPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityQAPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDirectYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnDirectYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDG.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnTPCNcls.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhi.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnGammaMonitor.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQinvCorrFctnEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctn3DSphericalEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoBPLCMS3DCorrFctnEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutAntiGamma.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticleEtCorr.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistance.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutPt.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoAvgSepCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDGV0.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoAnalysisAzimuthalPbPb.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistanceLM.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPicoEventRP.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistanceKK.cxx)
+set ( SRCS FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityKTPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityTPCEntranceSepPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoESDTrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoKKTrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoTPCInnerCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoChi2CorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnSource.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnDEtaDPhi.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelBPLCMSCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelGausRinvFreezeOutGenerator.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnTrueQ.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnNonIdDR.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctn3DSpherical.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctn3DLCMSSpherical.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticleMomRes.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelAllHiddenInfo.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorTrackTPCchiNdof.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQATrackCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQAEventCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorTrackTPCncls.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityTPCEntranceSepQAPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityQAPairCut.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoShareQualityCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDirectYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoModelCorrFctnDirectYlm.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDG.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnTPCNcls.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnDEtaDPhi.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnGammaMonitor.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoQinvCorrFctnEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctn3DSphericalEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoBPLCMS3DCorrFctnEMCIC.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutAntiGamma.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticleEtCorr.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistance.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutPt.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoAvgSepCorrFctn.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCutMonitorParticlePtPDGV0.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoAnalysisAzimuthalPbPb.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistanceLM.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPicoEventRP.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutRadialDistanceKK.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoPairCutResonances.cxx FEMTOSCOPY/AliFemtoUser/AliFemtoCorrFctnMinvMonitor.cxx)
string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
float nsigmaTPCK=-1000.;
float nsigmaTPCPi=-1000.;
float nsigmaTPCP=-1000.;
+ float nsigmaTPCE=-1000.;
// cout<<"in reader fESDpid"<<fESDpid<<endl;
nsigmaTPCK = fAODpidUtil->NumberOfSigmasTPC(tAodTrack,AliPID::kKaon);
nsigmaTPCPi = fAODpidUtil->NumberOfSigmasTPC(tAodTrack,AliPID::kPion);
nsigmaTPCP = fAODpidUtil->NumberOfSigmasTPC(tAodTrack,AliPID::kProton);
+ nsigmaTPCE = fAODpidUtil->NumberOfSigmasTPC(tAodTrack,AliPID::kElectron);
}
tFemtoTrack->SetNSigmaTPCPi(nsigmaTPCPi);
tFemtoTrack->SetNSigmaTPCK(nsigmaTPCK);
tFemtoTrack->SetNSigmaTPCP(nsigmaTPCP);
+ tFemtoTrack->SetNSigmaTPCE(nsigmaTPCE);
tFemtoTrack->SetTPCchi2(tAodTrack->Chi2perNDF());
tFemtoTrack->SetTPCncls(tAodTrack->GetTPCNcls());
float nsigmaTOFPi=-1000.;
float nsigmaTOFK=-1000.;
float nsigmaTOFP=-1000.;
+ float nsigmaTOFE=-1000.;
if ((tAodTrack->GetStatus() & AliESDtrack::kTOFpid) && //AliESDtrack::kTOFpid=0x8000
(tAodTrack->GetStatus() & AliESDtrack::kTOFout) && //AliESDtrack::kTOFout=0x2000
nsigmaTOFPi = fAODpidUtil->NumberOfSigmasTOF(tAodTrack,AliPID::kPion);
nsigmaTOFK = fAODpidUtil->NumberOfSigmasTOF(tAodTrack,AliPID::kKaon);
nsigmaTOFP = fAODpidUtil->NumberOfSigmasTOF(tAodTrack,AliPID::kProton);
+ nsigmaTOFE = fAODpidUtil->NumberOfSigmasTOF(tAodTrack,AliPID::kElectron);
Double_t len=200;// esdtrack->GetIntegratedLength(); !!!!!
Double_t tof=tAodTrack->GetTOFsignal();
tFemtoTrack->SetNSigmaTOFPi(nsigmaTOFPi);
tFemtoTrack->SetNSigmaTOFK(nsigmaTOFK);
tFemtoTrack->SetNSigmaTOFP(nsigmaTOFP);
+ tFemtoTrack->SetNSigmaTOFE(nsigmaTOFE);
//////////////////////////////////////
fNSigmaTPCPi(0),
fNSigmaTPCK(0),
fNSigmaTPCP(0),
+ fNSigmaTPCE(0),
fNSigmaTOFPi(0),
fNSigmaTOFK(0),
fNSigmaTOFP(0),
+ fNSigmaTOFE(0),
fSigmaToVertex(0),
fClusters(159),
fShared(159),
fNSigmaTPCPi(0),
fNSigmaTPCK(0),
fNSigmaTPCP(0),
+ fNSigmaTPCE(0),
fNSigmaTOFPi(0),
fNSigmaTOFK(0),
fNSigmaTOFP(0),
+ fNSigmaTOFE(0),
fSigmaToVertex(0),
fClusters(159),
fShared(159),
fNSigmaTPCPi=t.fNSigmaTPCPi;
fNSigmaTPCK=t.fNSigmaTPCK;
fNSigmaTPCP=t.fNSigmaTPCP;
+ fNSigmaTPCE=t.fNSigmaTPCE;
fNSigmaTOFPi=t.fNSigmaTOFPi;
fNSigmaTOFK=t.fNSigmaTOFK;
fNSigmaTOFP=t.fNSigmaTOFP;
+ fNSigmaTOFE=t.fNSigmaTOFE;
fSigmaToVertex=t.fSigmaToVertex;
fClusters=t.fClusters;
fShared=t.fShared;
fNSigmaTPCPi=aTrack.fNSigmaTPCPi;
fNSigmaTPCK=aTrack.fNSigmaTPCK;
fNSigmaTPCP=aTrack.fNSigmaTPCP;
+ fNSigmaTPCE=aTrack.fNSigmaTPCE;
fNSigmaTOFPi=aTrack.fNSigmaTOFPi;
fNSigmaTOFK=aTrack.fNSigmaTOFK;
fNSigmaTOFP=aTrack.fNSigmaTOFP;
+ fNSigmaTOFE=aTrack.fNSigmaTOFE;
fClusters=aTrack.fClusters;
fShared=aTrack.fShared;
fNominalTpcEntrancePoint=aTrack.fNominalTpcEntrancePoint;
void AliFemtoTrack::SetNSigmaTPCPi(const float& aNSigmaTPCPi){fNSigmaTPCPi=aNSigmaTPCPi;}
void AliFemtoTrack::SetNSigmaTPCK(const float& aNSigmaTPCK){fNSigmaTPCK=aNSigmaTPCK;}
void AliFemtoTrack::SetNSigmaTPCP(const float& aNSigmaTPCP){fNSigmaTPCP=aNSigmaTPCP;}
+void AliFemtoTrack::SetNSigmaTPCE(const float& aNSigmaTPCE){fNSigmaTPCE=aNSigmaTPCE;}
void AliFemtoTrack::SetNSigmaTOFPi(const float& aNSigmaTOFPi){fNSigmaTOFPi=aNSigmaTOFPi;}
void AliFemtoTrack::SetNSigmaTOFK(const float& aNSigmaTOFK){fNSigmaTOFK=aNSigmaTOFK;}
void AliFemtoTrack::SetNSigmaTOFP(const float& aNSigmaTOFP){fNSigmaTOFP=aNSigmaTOFP;}
+void AliFemtoTrack::SetNSigmaTOFE(const float& aNSigmaTOFE){fNSigmaTOFE=aNSigmaTOFE;}
void AliFemtoTrack::SetSigmaToVertex(const float& aSigma){fSigmaToVertex=aSigma;}
void AliFemtoTrack::SetXatDCA(const double& x) {fXatDCA=x;}
float AliFemtoTrack::NSigmaTPCPi() const{return fNSigmaTPCPi;}
float AliFemtoTrack::NSigmaTPCK() const{return fNSigmaTPCK;}
float AliFemtoTrack::NSigmaTPCP() const{return fNSigmaTPCP;}
+float AliFemtoTrack::NSigmaTPCE() const{return fNSigmaTPCE;}
float AliFemtoTrack::NSigmaTOFPi() const{return fNSigmaTOFPi;}
float AliFemtoTrack::NSigmaTOFK() const{return fNSigmaTOFK;}
float AliFemtoTrack::NSigmaTOFP() const{return fNSigmaTOFP;}
+float AliFemtoTrack::NSigmaTOFE() const{return fNSigmaTOFE;}
float AliFemtoTrack::SigmaToVertex() const{return fSigmaToVertex;}
float AliFemtoTrack::TOFpionTime() const{return fTofPionTime;}
float AliFemtoTrack::TOFkaonTime() const{return fTofKaonTime;}
float NSigmaTPCPi() const;
float NSigmaTPCK() const;
float NSigmaTPCP() const;
+ float NSigmaTPCE() const;
float VTOF() const;
float NSigmaTOFPi() const;
float NSigmaTOFK() const;
float NSigmaTOFP() const;
+ float NSigmaTOFE() const;
float TOFpionTime() const;
void SetNSigmaTPCPi(const float& x);
void SetNSigmaTPCK(const float& x);
void SetNSigmaTPCP(const float& x);
+ void SetNSigmaTPCE(const float& x);
void SetVTOF(const float& x);
void SetNSigmaTOFPi(const float& x);
void SetNSigmaTOFK(const float& x);
- void SetNSigmaTOFP(const float& x);
+ void SetNSigmaTOFP(const float& x);
+ void SetNSigmaTOFE(const float& x);
void SetTPCcluster(const short& aNBit, const Bool_t& aValue);
void SetTPCshared(const short& aNBit, const Bool_t& aValue);
float fNSigmaTPCPi; // nsigma TPC for pion
float fNSigmaTPCK; // nsigma TPC for K
float fNSigmaTPCP; // nsigma TPC for P
+ float fNSigmaTPCE; // nsigma TPC for electron
float fNSigmaTOFPi; // nsigma TPC for pion
float fNSigmaTOFK; // nsigma TPC for K
float fNSigmaTOFP; // nsigma TPC for P
+ float fNSigmaTOFE; // nsigma TPC for electron
float fSigmaToVertex; // Distance from track to vertex in sigmas
TBits fClusters; // Cluster per padrow map
--- /dev/null
+////////////////////////////////////////////////////////////////////////////////
+// //
+// AliFemtoCorrFctnGammaMonitor - A correlation function that analyzes //
+// two particle mass minvariant with various mass assumptions //
+// //
+// Authors: MaĆgorzata Janik majanik@cern.ch
+// Anna Zaborowska azaborow@cern.ch //
+// //
+////////////////////////////////////////////////////////////////////////////////
+
+#include "AliFemtoCorrFctnMinvMonitor.h"
+#include <cstdio>
+#include <TMath.h>
+
+#ifdef __ROOT__
+ClassImp(AliFemtoCorrFctnMinvMonitor)
+#endif
+
+//____________________________
+AliFemtoCorrFctnMinvMonitor::AliFemtoCorrFctnMinvMonitor(char* title):
+ AliFemtoCorrFctn(),
+ fMinveeFail(0),
+ fMinvee(0),
+ fMinv2piFail(0),
+ fMinv2pi(0),
+ fMinvppiFail(0),
+ fMinvppi(0)
+{
+ fMinveeFail = new TH1D(Form("MinveeGamma%s",title), "ee mass assumption GAMMA, minv",1000, 0.0, 10.0);
+ fMinvee = new TH1D(Form("Minvee%s",title), "ee mass assumption, minv",1000, 0.0, 10.0);
+ fMinv2piFail = new TH1D(Form("Minv2piResonances%s",title), "pipi mass assumption RESONANCES, minv",1000, 0.0, 10.0);
+ fMinv2pi = new TH1D(Form("Minv2pi%s",title), "pipi mass assumption, minv",1000, 0.0, 10.0);
+ fMinvppiFail = new TH1D(Form("MinvppiResonances%s",title), "ppi mass assumption RESONANCES, minv",1000, 0.0, 10.0);
+ fMinvppi = new TH1D(Form("Minvppi%s",title), "ppi mass assumption, minv",1000, 0.0, 10.0);
+}
+
+//____________________________
+AliFemtoCorrFctnMinvMonitor::AliFemtoCorrFctnMinvMonitor(const AliFemtoCorrFctnMinvMonitor& aCorrFctn) :
+ AliFemtoCorrFctn(),
+ fMinveeFail(0),
+ fMinvee(0),
+ fMinv2piFail(0),
+ fMinv2pi(0),
+ fMinvppiFail(0),
+ fMinvppi(0)
+{
+ // copy constructor
+ if (fMinveeFail) delete fMinveeFail;
+ fMinveeFail = new TH1D(*aCorrFctn.fMinveeFail);
+ if (fMinvee) delete fMinvee;
+ fMinvee = new TH1D(*aCorrFctn.fMinvee);
+ if (fMinv2piFail) delete fMinv2piFail;
+ fMinv2piFail = new TH1D(*aCorrFctn.fMinv2piFail);
+ if (fMinv2pi) delete fMinv2pi;
+ fMinv2pi = new TH1D(*aCorrFctn.fMinv2pi);
+ if (fMinvppiFail) delete fMinvppiFail;
+ fMinvppiFail = new TH1D(*aCorrFctn.fMinvppiFail);
+ if (fMinvppi) delete fMinvppi;
+ fMinvppi = new TH1D(*aCorrFctn.fMinvppi);
+}
+//____________________________
+AliFemtoCorrFctnMinvMonitor::~AliFemtoCorrFctnMinvMonitor(){
+ // destructor
+ delete fMinveeFail;
+ delete fMinvee;
+ delete fMinv2piFail;
+ delete fMinv2pi;
+ delete fMinvppiFail;
+ delete fMinvppi;
+}
+//_________________________
+AliFemtoCorrFctnMinvMonitor& AliFemtoCorrFctnMinvMonitor::operator=(const AliFemtoCorrFctnMinvMonitor& aCorrFctn)
+{
+ // assignment operator
+ if (this == &aCorrFctn)
+ return *this;
+
+ if (fMinveeFail) delete fMinveeFail;
+ fMinveeFail = new TH1D(*aCorrFctn.fMinveeFail);
+ if (fMinvee) delete fMinvee;
+ fMinvee = new TH1D(*aCorrFctn.fMinvee);
+ if (fMinv2piFail) delete fMinv2piFail;
+ fMinv2piFail = new TH1D(*aCorrFctn.fMinv2piFail);
+ if (fMinv2pi) delete fMinv2pi;
+ fMinv2pi = new TH1D(*aCorrFctn.fMinv2pi);
+ if (fMinvppiFail) delete fMinvppiFail;
+ fMinvppiFail = new TH1D(*aCorrFctn.fMinvppiFail);
+ if (fMinvppi) delete fMinvppi;
+ fMinvppi = new TH1D(*aCorrFctn.fMinvppi);
+
+ return *this;
+}
+//_________________________
+void AliFemtoCorrFctnMinvMonitor::Finish(){
+ // here is where we should normalize, fit, etc...
+ // we should NOT Draw() the histos (as I had done it below),
+ // since we want to insulate ourselves from root at this level
+ // of the code. Do it instead at root command line with browser.
+ // mShareNumerator->Draw();
+ //mShareDenominator->Draw();
+ //mRatio->Draw();
+
+}
+
+//____________________________
+AliFemtoString AliFemtoCorrFctnMinvMonitor::Report(){
+ // create report
+ string stemp = "Mass invariant Monitor Function Report\n";
+ AliFemtoString returnThis = stemp;
+ return returnThis;
+}
+//____________________________
+void AliFemtoCorrFctnMinvMonitor::AddRealPair( AliFemtoPair* pair){
+ double me = 0.000511;
+ double mPi = 0.13957018;
+ double mp = 0.938272046;
+
+ double mgammamax = 0.04;
+ double mK0min = 0.00049;
+ double mK0max = 0.00051;
+ double mK0 = 0.000497614;
+ double mRhomin = 0.000765;
+ double mRhomax = 0.000785;
+ double mRho = 0.00077526;
+ double mLmin = 1.095;
+ double mLmax = 1.135;
+ double mL = 1.115683;
+
+ if ((pair->Track1()->Track()->Charge() * pair->Track2()->Track()->Charge()) < 0.0) {
+
+ // check on ee pairs (gamma)
+ double e1 = TMath::Sqrt(me*me + pair->Track1()->Track()->P().Mag2());
+ double e2 = TMath::Sqrt(me*me + pair->Track2()->Track()->P().Mag2());
+ double minvGamma = 2*me*me + 2*(e1*e2 -
+ pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
+ pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
+ pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
+ if ( minvGamma < mgammamax )
+ {
+ fMinveeFail->Fill(minvGamma);
+ }
+ else fMinvee->Fill(minvGamma);
+ //check on resonances
+ double pi1 = TMath::Sqrt(mPi*mPi + pair->Track1()->Track()->P().Mag2());
+ double pi2 = TMath::Sqrt(mPi*mPi + pair->Track2()->Track()->P().Mag2());
+ double p1 = TMath::Sqrt(mp*mp + pair->Track1()->Track()->P().Mag2());
+ double p2 = TMath::Sqrt(mp*mp + pair->Track2()->Track()->P().Mag2());
+ //check on K0 and Rho
+ double minv2pi = 2*mPi*mPi + 2*(pi1*pi2 -
+ pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
+ pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
+ pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
+ if ( ((minv2pi>mK0min && minv2pi<mK0max) || (minv2pi>mRhomin && minv2pi<mRhomax)) )
+ {
+ fMinv2piFail->Fill(minv2pi);
+ }
+ else fMinv2pi->Fill(minv2pi);
+ //check on L0
+ double minvpPi = 2*mp*mPi + 2*(p1*pi2 -
+ pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
+ pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
+ pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
+ double minvPip = 2*mPi*mp + 2*(pi1*p2 -
+ pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
+ pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
+ pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
+ if( (minvpPi>mLmin) && (minvpPi<mLmax) )
+ {
+ fMinvppiFail->Fill(minvpPi);
+ }
+ else fMinvppi->Fill(minvpPi);
+ if( (minvPip>mLmin) && (minvPip<mLmax) )
+ {
+ fMinvppiFail->Fill(minvPip);
+ }
+ else fMinvppi->Fill(minvPip);
+ }
+}
+//____________________________
+void AliFemtoCorrFctnMinvMonitor::AddMixedPair( AliFemtoPair* pair){
+ }
+
+
+void AliFemtoCorrFctnMinvMonitor::WriteHistos()
+{
+ // Write out result histograms
+ fMinveeFail->Write();
+ fMinvee->Write();
+ fMinv2piFail->Write();
+ fMinv2pi->Write();
+ fMinvppiFail->Write();
+ fMinvppi->Write();
+}
+
+TList* AliFemtoCorrFctnMinvMonitor::GetOutputList()
+{
+ // Prepare the list of objects to be written to the output
+ TList *tOutputList = new TList();
+
+ tOutputList->Add(fMinveeFail);
+ tOutputList->Add(fMinvee);
+ tOutputList->Add(fMinv2piFail);
+ tOutputList->Add(fMinv2pi);
+ tOutputList->Add(fMinvppiFail);
+ tOutputList->Add(fMinvppi);
+
+ return tOutputList;
+}
--- /dev/null
+////////////////////////////////////////////////////////////////////////////////
+// //
+// AliFemtoCorrFctnGammaMonitor - A correlation function that analyzes //
+// two particle mass minvariant with various mass assumptions //
+// //
+// Authors: MaĆgorzata Janik majanik@cern.ch
+// Anna Zaborowska azaborow@cern.ch //
+// //
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef ALIFEMTOCORRFCTNMINVMONITOR_H
+#define ALIFEMTOCORRFCTNMINVMONITOR_H
+
+#include "TH1D.h"
+#include "AliFemtoCorrFctn.h"
+
+class AliFemtoCorrFctnMinvMonitor : public AliFemtoCorrFctn {
+public:
+ AliFemtoCorrFctnMinvMonitor(char* title);
+ AliFemtoCorrFctnMinvMonitor(const AliFemtoCorrFctnMinvMonitor& aCorrFctn);
+ virtual ~AliFemtoCorrFctnMinvMonitor();
+
+ AliFemtoCorrFctnMinvMonitor& operator=(const AliFemtoCorrFctnMinvMonitor& aCorrFctn);
+
+ virtual AliFemtoString Report();
+ virtual void AddRealPair(AliFemtoPair* aPair);
+ virtual void AddMixedPair(AliFemtoPair* aPair);
+
+ virtual void Finish();
+
+ void WriteHistos();
+ virtual TList* GetOutputList();
+private:
+
+ TH1D *fMinveeFail; // ee mass assumption - failed pairs
+ TH1D *fMinvee; // ee mass assumption - passed pairs
+ TH1D *fMinv2piFail; // 2 pi mass assumption - failed pairs
+ TH1D *fMinv2pi; // 2 pi mass assumption - passed pairs
+ TH1D *fMinvppiFail; // p pi mass assumption - failed pairs
+ TH1D *fMinvppi; // p pi mass assumption - passed pairs
+
+#ifdef __ROOT__
+ ClassDef(AliFemtoCorrFctnMinvMonitor, 1)
+#endif
+};
+
+
+#endif
+
fMinPforTPCpid(0.0),
fMaxPforTPCpid(10000.0),
fMinPforITSpid(0.0),
- fMaxPforITSpid(10000.0)
+ fMaxPforITSpid(10000.0),
+ fElectronRejection(0)
{
// Default constructor
fNTracksPassed = fNTracksFailed = 0;
tMost[4] = track->PidProbProton()*PidFractionProton(track->P().Mag());
float ipidmax = 0.0;
+ //****N Sigma Method -- electron rejection****
+ if(fElectronRejection)
+ if(!IsElectron(track->NSigmaTPCE(),track->NSigmaTPCPi(),track->NSigmaTPCK(), track->NSigmaTPCP()))
+ return false;
//****N Sigma Method****
if(fPIDMethod==0){
fNsigma = nsigma;
}
+
void AliFemtoESDTrackCut::SetClusterRequirementITS(AliESDtrackCuts::Detector det, AliESDtrackCuts::ITSClusterRequirement req)
{
fCutClusterRequirementITS[det] = req;
return kFALSE;
}
+
+bool AliFemtoESDTrackCut::IsElectron(float nsigmaTPCE, float nsigmaTPCPi,float nsigmaTPCK, float nsigmaTPCP)
+{
+ if(nsigmaTPCE<3 && nsigmaTPCPi>3 && nsigmaTPCK>3 && nsigmaTPCP>3)
+ return false;
+ else
+ return true;
+}
///////////////////////////////////////////////////////////////////////////
// //
// AliFemtoESDTrackCut: A basic track cut that used information from //
-// ALICE ESD to accept or reject the track. //
-// Enables the selection on charge, transverse momentum, rapidity, //
-// pid probabilities, number of ITS and TPC clusters //
-// Author: Marek Chojnacki (WUT), mchojnacki@knf.pw.edu.pl //
-// //
-///////////////////////////////////////////////////////////////////////////
+// ALICE ESD to accept or reject the track. ////////////////////////////////////////////////
#include "AliESDtrackCuts.h"
#ifndef ALIFEMTOESDTRACKCUT_H
void SetMomRangeTOFpidIs(const float& minp, const float& maxp);
void SetMomRangeTPCpidIs(const float& minp, const float& maxp);
void SetMomRangeITSpidIs(const float& minp, const float& maxp);
+ void SetElectronRejection(Bool_t);
private: // here are the quantities I want to cut on...
float fMaxPforTPCpid; // momentum till which TPC PID is requested
float fMinPforITSpid; // momentum from which ITS PID is requested
float fMaxPforITSpid; // momentum till which ITS PID is requested
+ bool fElectronRejection;
float PidFractionElectron(float mom) const;
float PidFractionPion(float mom) const;
bool IsKaonNSigma(float mom, float nsigmaTPC, float nsigmaTOF);
bool IsPionNSigma(float mom, float nsigmaTPC, float nsigmaTOF);
bool IsProtonNSigma(float mom, float nsigmaTPC, float nsigmaTOF);
+ bool IsElectron(float nsigmaTPCE, float nsigmaTPCPi,float nsigmaTPCK, float nsigmaTPCP);
Bool_t CheckITSClusterRequirement(AliESDtrackCuts::ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2); //the same as in AliESDtrackCuts
inline void AliFemtoESDTrackCut::SetPidProbElectron(const float& lo,const float& hi){fPidProbElectron[0]=lo; fPidProbElectron[1]=hi;}
inline void AliFemtoESDTrackCut::SetPidProbPion(const float& lo,const float& hi){fPidProbPion[0]=lo; fPidProbPion[1]=hi;}
inline void AliFemtoESDTrackCut::SetPidProbKaon(const float& lo,const float& hi){fPidProbKaon[0]=lo; fPidProbKaon[1]=hi;}
-inline void AliFemtoESDTrackCut::SetPidProbProton(const float& lo,const float& hi){fPidProbProton[0]=lo; fPidProbProton[1]=hi;}
+inline void AliFemtoESDTrackCut::SetPidProbProton
+(const float& lo,const float& hi){fPidProbProton[0]=lo; fPidProbProton[1]=hi;}
inline void AliFemtoESDTrackCut::SetPidProbMuon(const float& lo,const float& hi){fPidProbMuon[0]=lo; fPidProbMuon[1]=hi;}
inline void AliFemtoESDTrackCut::SetLabel(const bool& flag){fLabel=flag;}
inline void AliFemtoESDTrackCut::SetStatus(const long& status){fStatus=status;}
inline void AliFemtoESDTrackCut::SetMinImpactXY(const float& minimpxy) { fMinImpactXY = minimpxy; }
inline void AliFemtoESDTrackCut::SetMaxImpactXYPtDep(const float& maxoff, const float& maxnrm, const float& maxpow) { fMaxImpactXYPtOff = maxoff; fMaxImpactXYPtNrm = maxnrm; fMaxImpactXYPtPow = maxpow; }
inline void AliFemtoESDTrackCut::SetMaxImpactZ(const float& maximpz) { fMaxImpactZ = maximpz; }
-
+inline void AliFemtoESDTrackCut::SetElectronRejection(Bool_t setE) { fElectronRejection = setE; }
#endif
fDPhiStarMin(0),
fEtaMin(0),
fMinRad(0.8),
+ fMaxRad(2.5),
fMagSign(1),
fPhistarmin(kTRUE)
{
fDPhiStarMin(0),
fEtaMin(0),
fMinRad(0.8),
+ fMaxRad(2.5),
fMagSign(1),
fPhistarmin(kTRUE)
{
fDPhiStarMin = c.fDPhiStarMin;
fEtaMin = c.fEtaMin;
fMinRad = c.fMinRad;
+ fMaxRad = c.fMaxRad;
fMagSign = c.fMagSign;
fPhistarmin = c.fPhistarmin;
}
fDPhiStarMin = c.fDPhiStarMin;
fEtaMin = c.fEtaMin;
fMinRad = c.fMinRad;
+ fMaxRad = c.fMaxRad;
fMagSign = c.fMagSign;
fPhistarmin = c.fPhistarmin;
else {
AliAODEvent *fAOD;
fAOD = aodH->GetEvent();
+ //cout<<fAOD<<endl;
magsign = fAOD->GetMagneticField();
}
rad = fMinRad;
if (fPhistarmin) {
- for (rad = 0.8; rad < 2.5; rad += 0.01) {
+ for (rad = fMinRad; rad < fMaxRad; rad += 0.01) {
Double_t dps = (phi2-phi1+(TMath::ASin(-0.075*chg2*fMagSign*rad/ptv2))-(TMath::ASin(-0.075*chg1*fMagSign*rad/ptv1)));
dps = TVector2::Phi_mpi_pi(dps);
Double_t etad = eta2 - eta1;
fMinRad = minrad;
}
+void AliFemtoPairCutRadialDistance::SetMaximumRadius(double maxrad)
+{
+ fMaxRad = maxrad;
+}
+
void AliFemtoPairCutRadialDistance::SetMagneticFieldSign(int magsign)
{
if(magsign>1) fMagSign = 1;
void SetPhiStarDifferenceMinimum(double dtpc);
void SetEtaDifferenceMinimum(double etpc);
void SetMinimumRadius(double minrad);
+ void SetMaximumRadius(double maxrad);
void SetMagneticFieldSign(int magsign);
void SetPhiStarMin(Bool_t);
//Double_t fRadius; // Radius at which the separation is calculated
Double_t fEtaMin; // Minimum allowed pair separation in eta
Double_t fMinRad;
+ Double_t fMaxRad;
Int_t fMagSign;
Bool_t fPhistarmin;
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// //
+// AliFemtoPairCutResonances - a pair cut which checks //
+// for some pair qualities that attempt to identify slit/doubly //
+// reconstructed tracks and also selects pairs based on their separation //
+// at the entrance to the TPC //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+#include "AliFemtoPairCutResonances.h"
+#include <string>
+#include <cstdio>
+#include <TMath.h>
+
+#ifdef __ROOT__
+ClassImp(AliFemtoPairCutResonances)
+#endif
+
+//__________________
+AliFemtoPairCutResonances::AliFemtoPairCutResonances():
+ AliFemtoShareQualityPairCut(),
+ fMaxEEMinv(0.0),
+ fMaxDTheta(0.0),
+ fDataType(kAOD),
+ fSwitchPassFail(0)
+{
+}
+//__________________
+AliFemtoPairCutResonances::AliFemtoPairCutResonances(const AliFemtoPairCutResonances& c) :
+ AliFemtoShareQualityPairCut(c),
+ fMaxEEMinv(0.0),
+ fMaxDTheta(0.0),
+ fDataType(kAOD),
+ fSwitchPassFail(0)
+{
+ fMaxEEMinv = c.fMaxEEMinv;
+ fMaxDTheta = c.fMaxDTheta;
+ fDataType = c.fDataType;
+ fSwitchPassFail=c.fSwitchPassFail;
+}
+
+AliFemtoPairCutResonances& AliFemtoPairCutResonances::operator=(const AliFemtoPairCutResonances& c)
+{
+ if (this != &c) {
+ fMaxEEMinv = c.fMaxEEMinv;
+ fMaxDTheta = c.fMaxDTheta;
+ fDataType = c.fDataType;
+ fSwitchPassFail=c.fSwitchPassFail;
+ }
+
+ return *this;
+
+}
+//__________________
+AliFemtoPairCutResonances::~AliFemtoPairCutResonances(){
+}
+//__________________
+bool AliFemtoPairCutResonances::Pass(const AliFemtoPair* pair){
+ // Accept pairs based on their TPC entrance separation and
+ // quality and sharity
+ bool temp = true;
+
+ if(fDataType==kKine)
+ return true;
+
+ double me = 0.000511;
+ double mPi = 0.13957018;
+ double mp = 0.938272046;
+
+ double mK0min = 0.00049;
+ double mK0max = 0.00051;
+ double mK0 = 0.000497614;
+ double mRhomin = 0.000765;
+ double mRhomax = 0.000785;
+ double mRho = 0.00077526;
+ double mLmin = 1.095;
+ double mLmax = 1.135;
+ double mL = 1.115683;
+
+ if ((pair->Track1()->Track()->Charge() * pair->Track2()->Track()->Charge()) < 0.0) {
+ double theta1 = pair->Track1()->Track()->P().Theta();
+ double theta2 = pair->Track2()->Track()->P().Theta();
+ double dtheta = TMath::Abs(theta1 - theta2);
+
+ // check on ee pairs (gamma)
+ double e1 = TMath::Sqrt(me*me + pair->Track1()->Track()->P().Mag2());
+ double e2 = TMath::Sqrt(me*me + pair->Track2()->Track()->P().Mag2());
+ double minvGamma = 2*me*me + 2*(e1*e2 -
+ pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
+ pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
+ pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
+ if ( minvGamma < fMaxEEMinv )
+ temp = false;
+ //check on resonances
+ double pi1 = TMath::Sqrt(mPi*mPi + pair->Track1()->Track()->P().Mag2());
+ double pi2 = TMath::Sqrt(mPi*mPi + pair->Track2()->Track()->P().Mag2());
+ double p1 = TMath::Sqrt(mp*mp + pair->Track1()->Track()->P().Mag2());
+ double p2 = TMath::Sqrt(mp*mp + pair->Track2()->Track()->P().Mag2());
+ //check on K0 and Rho
+ double minv2pi = 2*mPi*mPi + 2*(pi1*pi2 -
+ pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
+ pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
+ pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
+ if ( ((minv2pi>mK0min && minv2pi<mK0max) || (minv2pi>mRhomin && minv2pi<mRhomax)) )
+ temp = false;
+ //check on L0
+ double minvpPi = 2*mp*mPi + 2*(p1*pi2 -
+ pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
+ pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
+ pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
+ double minvPip = 2*mPi*mp + 2*(pi1*p2 -
+ pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
+ pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
+ pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());
+ if( ((minvpPi>mLmin) && (minvpPi<mLmax)) || ((minvPip>mLmin) && (minvPip<mLmax)) )
+ temp = false;
+ }
+ if (fSwitchPassFail) // choose only resonances
+ {
+ if (!temp) {
+ temp = AliFemtoShareQualityPairCut::Pass(pair);
+ if (temp) {fNPairsPassed++;}
+ else fNPairsFailed++;
+ return temp;
+ }
+ else
+ {
+ fNPairsFailed++;
+ return false;
+ }
+ }
+ else // cut resonances
+ {
+ if (temp) {
+ temp = AliFemtoShareQualityPairCut::Pass(pair);
+ if (temp) {fNPairsPassed++;}
+ else fNPairsFailed++;
+ return temp;
+ }
+ else
+ {
+ fNPairsFailed++;
+ return false;
+ }
+ }
+}
+//__________________
+AliFemtoString AliFemtoPairCutResonances::Report(){
+ // Prepare a report from the execution
+ string stemp = "AliFemtoPairCutResonances Pair Cut - remove pairs possibly coming from Gamma conversions\n";
+ char ctemp[100];
+ stemp += ctemp;
+ snprintf(ctemp , 100, "Number of pairs which passed:\t%ld Number which failed:\t%ld\n",fNPairsPassed,fNPairsFailed);
+ stemp += ctemp;
+ AliFemtoString returnThis = stemp;
+ return returnThis;}
+//__________________
+
+TList *AliFemtoPairCutResonances::ListSettings()
+{
+ // return a list of settings in a writable form
+ TList *tListSetttings = AliFemtoShareQualityPairCut::ListSettings();
+ char buf[200];
+ snprintf(buf, 200, "AliFemtoPairCutResonances.maxeeminv=%f", fMaxEEMinv);
+ snprintf(buf, 200, "AliFemtoPairCutResonances.maxdtheta=%f", fMaxDTheta);
+ tListSetttings->AddLast(new TObjString(buf));
+
+ return tListSetttings;
+}
+
+void AliFemtoPairCutResonances::SetMaxEEMinv(Double_t maxeeminv)
+{
+ fMaxEEMinv = maxeeminv;
+}
+
+void AliFemtoPairCutResonances::SetMaxThetaDiff(Double_t maxdtheta)
+{
+ fMaxDTheta = maxdtheta;
+}
+
+void AliFemtoPairCutResonances::SetDataType(AliFemtoDataType type)
+{
+ fDataType = type;
+}
+
+void AliFemtoPairCutResonances::SetChooseResonances(bool onlyResonances)
+{
+ fSwitchPassFail = onlyResonances;
+}
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// //
+// AliFemtoPairCutResonances - a pair cut which checks //
+// for some pair qualities that attempt to identify slit/doubly //
+// reconstructed tracks and also selects pairs based on their separation //
+// at the entrance to the TPC //
+// //
+/////////////////////////////////////////////////////////////////////////////
+
+
+#ifndef ALIFEMTOPAIRCUTRESONANCES_H
+#define ALIFEMTOPAIRCUTRESONANCES_H
+
+#include "AliFemtoPairCut.h"
+#include "AliFemtoShareQualityPairCut.h"
+
+class AliFemtoPairCutResonances : public AliFemtoShareQualityPairCut{
+public:
+ AliFemtoPairCutResonances();
+ AliFemtoPairCutResonances(const AliFemtoPairCutResonances& c);
+ virtual ~AliFemtoPairCutResonances();
+ AliFemtoPairCutResonances& operator=(const AliFemtoPairCutResonances& c);
+
+ virtual bool Pass(const AliFemtoPair* pair);
+ virtual AliFemtoString Report();
+ virtual TList *ListSettings();
+ virtual AliFemtoPairCut* Clone();
+ void SetMaxEEMinv(Double_t maxeeminv);
+ void SetMaxThetaDiff(Double_t maxdtheta);
+ void SetDataType(AliFemtoDataType type);
+ void SetChooseResonances(bool onlyResonances);
+
+ protected:
+ Double_t fMaxEEMinv; // Maximum allowed ee Minv
+ Double_t fMaxDTheta; // Maximum polar angle difference
+ AliFemtoDataType fDataType; //Use ESD / AOD / Kinematics.
+ bool fSwitchPassFail; // cut resonances (false), choose resonances (true)
+
+#ifdef __ROOT__
+ ClassDef(AliFemtoPairCutResonances, 0)
+#endif
+};
+
+inline AliFemtoPairCut* AliFemtoPairCutResonances::Clone() { AliFemtoPairCutResonances* c = new AliFemtoPairCutResonances(*this); return c;}
+
+#endif
#pragma link C++ class AliFemtoCutMonitorParticlePtPDGV0;
#pragma link C++ class AliFemtoCutMonitorParticleEtCorr;
#pragma link C++ class AliFemtoCorrFctnGammaMonitor;
+#pragma link C++ class AliFemtoCorrFctnMinvMonitor;
#pragma link C++ class AliFemtoPairCutAntiGamma;
+#pragma link C++ class AliFemtoPairCutResonances;
//#pragma link C++ class AliFemtoPhiPairCut;
#pragma link C++ class AliFemtoQinvCorrFctnEMCIC;
#pragma link C++ class AliFemtoCorrFctn3DSphericalEMCIC;