X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGCF%2FFEMTOSCOPY%2FAliFemto%2FAliFemtoV0TrackPairCut.cxx;fp=PWGCF%2FFEMTOSCOPY%2FAliFemto%2FAliFemtoV0TrackPairCut.cxx;h=0000000000000000000000000000000000000000;hb=c627660e3ea095ed462f5ce4ad36a184f40e0dd7;hp=f5c259c85c5c6131973f27a6566a9d0b257160a5;hpb=d85f6819269447083582dbf4349395fe419ff1f5;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0TrackPairCut.cxx b/PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0TrackPairCut.cxx deleted file mode 100644 index f5c259c85c5..00000000000 --- a/PWGCF/FEMTOSCOPY/AliFemto/AliFemtoV0TrackPairCut.cxx +++ /dev/null @@ -1,466 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// // -// AliFemtoShareQualityPairCut - a pair cut which checks for some pair // -// qualities that attempt to identify slit/doubly reconstructed tracks // -// // -///////////////////////////////////////////////////////////////////////////// -/*************************************************************************** - * - * $Id: AliFemtoShareQualityPairCut.cxx 50722 2011-07-21 15:18:38Z akisiel $ - * - * Author: Adam Kisiel, Ohio State, kisiel@mps.ohio-state.edu - *************************************************************************** - * - * Description: part of STAR HBT Framework: AliFemtoMaker package - * a cut to remove "shared" and "split" pairs - * - *************************************************************************** - * - * - **************************************************************************/ - -#include "AliFemtoV0TrackPairCut.h" -#include -#include - -#ifdef __ROOT__ -ClassImp(AliFemtoV0TrackPairCut) -#endif - -//__________________ -AliFemtoV0TrackPairCut::AliFemtoV0TrackPairCut(): - fNPairsPassed(0), - fNPairsFailed(0), - fV0Max(1.0), - fShareQualityMax(1.0), - fShareFractionMax(1.0), - fRemoveSameLabel(0), - fTrackTPCOnly(0), - fDataType(kAOD), - fDTPCMin(0), - fDTPCExitMin(0), - fKstarCut(0), - fFirstParticleType(kLambda), - fSecondParticleType(kProton), - fMinAvgSepTrackPos(0), - fMinAvgSepTrackNeg(0) -{ - // Default constructor - // Nothing to do -} -//__________________ -AliFemtoV0TrackPairCut::~AliFemtoV0TrackPairCut(){ - /* no-op */ -} -AliFemtoV0TrackPairCut& AliFemtoV0TrackPairCut::operator=(const AliFemtoV0TrackPairCut& cut) -{ - if (this != &cut) { - - AliFemtoPairCut::operator=(cut); - fNPairsPassed = 0; - fNPairsFailed =0; - fV0Max = 1.0; - fShareQualityMax = 1.0; - fShareFractionMax = 1.0; - fRemoveSameLabel = 0; - fTrackTPCOnly = 0; - fDataType = kAOD; - fDTPCMin = 0; - fDTPCExitMin = 0; - fMinAvgSepTrackPos = 0; - fMinAvgSepTrackNeg = 0; - } - - return *this; -} -//__________________ -bool AliFemtoV0TrackPairCut::Pass(const AliFemtoPair* pair){ - // Check for pairs that are possibly shared/double reconstruction - - bool temp = true; - //Track1 - V0 - //Track2 - track - - if(!(pair->Track1()->V0() && pair->Track2()->Track())) - { - return false; - } - if(fTrackTPCOnly) - { - if( (-(pair->Track1()->V0()->IdNeg()+1)) ==pair->Track2()->TrackId() || (-(pair->Track1()->V0()->IdPos()+1)) ==pair->Track2()->TrackId()) - { - return false; - } - } - else - { - if(pair->Track1()->V0()->IdNeg()==pair->Track2()->TrackId() || pair->Track1()->V0()->IdPos()==pair->Track2()->TrackId()) - { - return false; - } - } - - bool tempTPCEntrancePos = true; - bool tempTPCEntranceNeg = true; - bool tempTPCExitPos = true; - bool tempTPCExitNeg = true; - if(fDataType==kESD || fDataType==kAOD) - { - double distx = pair->Track1()->V0()->NominalTpcEntrancePointPos().x() - pair->Track2()->Track()->NominalTpcEntrancePoint().x(); - double disty = pair->Track1()->V0()->NominalTpcEntrancePointPos().y() - pair->Track2()->Track()->NominalTpcEntrancePoint().y(); - double distz = pair->Track1()->V0()->NominalTpcEntrancePointPos().z() - pair->Track2()->Track()->NominalTpcEntrancePoint().z(); - double distPos = sqrt(distx*distx + disty*disty + distz*distz); - - distx = pair->Track1()->V0()->NominalTpcEntrancePointNeg().x() - pair->Track2()->Track()->NominalTpcEntrancePoint().x(); - disty = pair->Track1()->V0()->NominalTpcEntrancePointNeg().y() - pair->Track2()->Track()->NominalTpcEntrancePoint().y(); - distz = pair->Track1()->V0()->NominalTpcEntrancePointNeg().z() - pair->Track2()->Track()->NominalTpcEntrancePoint().z(); - double distNeg = sqrt(distx*distx + disty*disty + distz*distz); - - double distExitX = pair->Track1()->V0()->NominalTpcExitPointPos().x() - pair->Track2()->Track()->NominalTpcExitPoint().x(); - double distExitY = pair->Track1()->V0()->NominalTpcExitPointPos().y() - pair->Track2()->Track()->NominalTpcExitPoint().y(); - double distExitZ = pair->Track1()->V0()->NominalTpcExitPointPos().z() - pair->Track2()->Track()->NominalTpcExitPoint().z(); - double distExitPos = sqrt(distExitX*distExitX + distExitY*distExitY + distExitZ*distExitZ); - - distExitX = pair->Track1()->V0()->NominalTpcExitPointNeg().x() - pair->Track2()->Track()->NominalTpcExitPoint().x(); - distExitY = pair->Track1()->V0()->NominalTpcExitPointNeg().y() - pair->Track2()->Track()->NominalTpcExitPoint().y(); - distExitZ = pair->Track1()->V0()->NominalTpcExitPointNeg().z() - pair->Track2()->Track()->NominalTpcExitPoint().z(); - double distExitNeg = sqrt(distExitX*distExitX + distExitY*distExitY + distExitZ*distExitZ); - - tempTPCEntrancePos = distPos > fDTPCMin; - tempTPCEntranceNeg = distNeg > fDTPCMin; - tempTPCExitPos = distExitPos > fDTPCExitMin; - tempTPCExitNeg = distExitNeg > fDTPCExitMin; - } - - if(!tempTPCEntrancePos || !tempTPCEntranceNeg || !tempTPCExitPos || !tempTPCExitNeg) return false; - - //reject merged trakcs in TPC - - - //temp = dist > fDTPCMin; - //koniec kopii - //if(!temp) - //return false; - - //kopia z AliFemtoShareQualityPairCut.cxx - Int_t nh = 0; - Int_t an = 0; - Int_t ns = 0; - - - - if ((fShareFractionMax < 1.0) && ( fShareQualityMax < 1.0)) { - for (unsigned int imap=0; imapTrack1()->V0()->TPCclustersPos().GetNbits(); imap++) { - // If both have clusters in the same row - if (pair->Track1()->V0()->TPCclustersPos().TestBitNumber(imap) && - pair->Track2()->Track()->TPCclusters().TestBitNumber(imap)) { - // Do they share it ? - if (pair->Track1()->V0()->TPCsharingPos().TestBitNumber(imap) && - pair->Track2()->Track()->TPCsharing().TestBitNumber(imap)) - { - // cout << "A shared cluster !!!" << endl; - // cout << "imap idx1 idx2 " - // << imap << " " - // << tP1idx[imap] << " " << tP2idx[imap] << endl; - an++; - nh+=2; - ns+=2; - } - - // Different hits on the same padrow - else { - an--; - nh+=2; - } - } - else if (pair->Track1()->V0()->TPCclustersPos().TestBitNumber(imap) || - pair->Track2()->Track()->TPCclusters().TestBitNumber(imap)) { - // One track has a hit, the other does not - an++; - nh++; - } - } - - Float_t hsmval = 0.0; - Float_t hsfval = 0.0; - - if (nh >0) { - hsmval = an*1.0/nh; - hsfval = ns*1.0/nh; - } - // if (hsmval > -0.4) { - // cout << "Pair quality: " << hsmval << " " << an << " " << nh << " " - // << (pair->Track1()->Track()) << " " - // << (pair->Track2()->Track()) << endl; - // cout << "Bits: " << pair->Track1()->Track()->TPCclusters().GetNbits() << endl; - // } - // if (hsfval > 0.0) { - // cout << "Pair sharity: " << hsfval << " " << ns << " " << nh << " " << hsmval << " " << an << " " << nh << endl; - // } - - temp = (hsmval < fShareQualityMax) && (hsfval < fShareFractionMax); - if(!temp) return false; - - nh = 0; - an = 0; - ns = 0; - - for (unsigned int imap=0; imapTrack1()->V0()->TPCclustersNeg().GetNbits(); imap++) { - // If both have clusters in the same row - if (pair->Track1()->V0()->TPCclustersNeg().TestBitNumber(imap) && - pair->Track2()->Track()->TPCclusters().TestBitNumber(imap)) { - // Do they share it ? - if (pair->Track1()->V0()->TPCsharingNeg().TestBitNumber(imap) && - pair->Track2()->Track()->TPCsharing().TestBitNumber(imap)) - { - // cout << "A shared cluster !!!" << endl; - // cout << "imap idx1 idx2 " - // << imap << " " - // << tP1idx[imap] << " " << tP2idx[imap] << endl; - an++; - nh+=2; - ns+=2; - } - - // Different hits on the same padrow - else { - an--; - nh+=2; - } - } - else if (pair->Track1()->V0()->TPCclustersNeg().TestBitNumber(imap) || - pair->Track2()->Track()->TPCclusters().TestBitNumber(imap)) { - // One track has a hit, the other does not - an++; - nh++; - } - } - - hsmval = 0.0; - hsfval = 0.0; - - if (nh >0) { - hsmval = an*1.0/nh; - hsfval = ns*1.0/nh; - } - // if (hsmval > -0.4) { - // cout << "Pair quality: " << hsmval << " " << an << " " << nh << " " - // << (pair->Track1()->Track()) << " " - // << (pair->Track2()->Track()) << endl; - // cout << "Bits: " << pair->Track1()->Track()->TPCclusters().GetNbits() << endl; - // } - // if (hsfval > 0.0) { - // cout << "Pair sharity: " << hsfval << " " << ns << " " << nh << " " << hsmval << " " << an << " " << nh << endl; - // } - - temp = (hsmval < fShareQualityMax) && (hsfval < fShareFractionMax); - - - } - else - temp = true; - //koniec kopii - - - //avg sep pair cut - double avgSep=0; - AliFemtoThreeVector first, second, tmp; - for(int i=0; i<8 ;i++) - { - tmp = pair->Track1()->V0()->NominalTpcPointPos(i); - //cout<<"X pos: "<Track2()->Track()->NominalTpcPoint(i); - second.SetX((double)tmp.x()); - second.SetY((double)tmp.y()); - second.SetZ((double)tmp.z()); - - avgSep += TMath::Sqrt(((double)first.x()-(double)second.x())*((double)first.x()-(double)second.x())+((double)first.y()-(double)second.y())*((double)first.y()-second.y())+((double)first.z()-(double)second.z())*((double)first.z()-(double)second.z())); - } - avgSep /= 8; - - if(avgSepTrack1()->V0()->NominalTpcPointNeg(i); - //cout<<"X pos: "<Track2()->Track()->NominalTpcPoint(i); - second.SetX((double)tmp.x()); - second.SetY((double)tmp.y()); - second.SetZ((double)tmp.z()); - - avgSep += TMath::Sqrt(((double)first.x()-(double)second.x())*((double)first.x()-(double)second.x())+((double)first.y()-(double)second.y())*((double)first.y()-second.y())+((double)first.z()-(double)second.z())*((double)first.z()-(double)second.z())); - } - avgSep /= 8; - - if(avgSep 0) - { - - //2 daughters of first V0 - double mom1PosX = pair->Track1()->V0()->MomPosX(); - double mom1PosY = pair->Track1()->V0()->MomPosY(); - double mom1PosZ = pair->Track1()->V0()->MomPosZ(); - double mom1NegX = pair->Track1()->V0()->MomNegX(); - double mom1NegY = pair->Track1()->V0()->MomNegY(); - double mom1NegZ = pair->Track1()->V0()->MomNegZ(); - - - //double PionMass = 0.13956995; - //double KaonMass = 0.493677; - double ProtonMass = 0.938272; - //double LambdaMass = 1.115683; - - AliFemtoLorentzVector fFourMomentum1; // Particle momentum - AliFemtoLorentzVector fFourMomentum2; // Particle momentum - - AliFemtoThreeVector temp1; - double ener1=0; - if(fFirstParticleType == 0) //lambda - { - if(fSecondParticleType == 2) //proton - { - //temp1 = ::sqrt(mom1PosX*mom1PosX+mom1PosY*mom1PosY+mom1PosZ*mom1PosZ); - temp1.SetX(mom1PosX); - temp1.SetY(mom1PosY); - temp1.SetZ(mom1PosZ); - ener1 = ::sqrt(temp1.Mag2()+ProtonMass*ProtonMass); - } - } - else if(fFirstParticleType == 1) //antilambda - { - if(fSecondParticleType == 3) //antiproton - { - //temp1 = ::sqrt(mom1NegX*mom1NegX+mom1NegY*mom1NegY+mom1NegZ*mom1NegZ); - temp1.SetX(mom1NegX); - temp1.SetY(mom1NegY); - temp1.SetZ(mom1NegZ); - ener1 = ::sqrt(temp1.Mag2()+ProtonMass*ProtonMass); - } - } - fFourMomentum1.SetVect(temp1); - fFourMomentum1.SetE(ener1); - - //AliFemtoLorentzVector fFourMomentum2; // Particle momentum - AliFemtoThreeVector temp2; - double ener2=0; - - //2 daughters of second V0 - temp2 = pair->Track2()->Track()->P(); - - - if(fSecondParticleType == 2 || fSecondParticleType == 3) //proton - { - ener2 = ::sqrt(temp2.Mag2()+ProtonMass*ProtonMass); - } - - fFourMomentum2.SetVect(temp2); - fFourMomentum2.SetE(ener2); - - //QInv calculation - AliFemtoLorentzVector tDiff = (fFourMomentum1-fFourMomentum2); - - double tQinv = fabs(-1.*tDiff.m()); // note - qInv() will be negative for identical pairs... - - //cout<<"tQinv/2: "<AddLast(new TObjString(buf)); - - return tListSetttings; -} - -void AliFemtoV0TrackPairCut::SetRemoveSameLabel(Bool_t aRemove) -{ - fRemoveSameLabel = aRemove; -} - -void AliFemtoV0TrackPairCut::SetTPCOnly(Bool_t tpconly) -{ - fTrackTPCOnly = tpconly; -} - -void AliFemtoV0TrackPairCut::SetShareQualityMax(Double_t aShareQualityMax) { - fShareQualityMax = aShareQualityMax; -} - -void AliFemtoV0TrackPairCut::SetShareFractionMax(Double_t aShareFractionMax) { - fShareFractionMax = aShareFractionMax; -} - -void AliFemtoV0TrackPairCut::SetDataType(AliFemtoDataType type) -{ - fDataType = type; -} - -void AliFemtoV0TrackPairCut::SetTPCEntranceSepMinimum(double dtpc) -{ - fDTPCMin = dtpc; -} - -void AliFemtoV0TrackPairCut::SetTPCExitSepMinimum(double dtpc) -{ - fDTPCExitMin = dtpc; -} - -void AliFemtoV0TrackPairCut::SetKstarCut(double kstar, AliFemtoParticleType firstParticle, AliFemtoParticleType secondParticle) -{ - fKstarCut = kstar; - fFirstParticleType = firstParticle; //for kstar - first particle type (V0 type) - fSecondParticleType = secondParticle; -} - -void AliFemtoV0TrackPairCut::SetMinAvgSeparation(int type, double minSep) -{ - if(type == 0) //Track-Pos - fMinAvgSepTrackPos = minSep; - else if(type == 1) //Track-Neg - fMinAvgSepTrackNeg = minSep; -}