///////////////////////////////////////////////////////////////////////////// // // // 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 #include #include #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 && minv2pimRhomin && minv2piTrack1()->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) && (minvpPimLmin) && (minvPipAddLast(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; }