//==================================== //last modified FK 6.NOV 2009 //==================================== //blah // blah #include "AliJCard.h" //ClassImp(AliJCard); AliJCard::AliJCard(): AliJBaseCard(), fhCorr(0), feventV3kv(0), fIndexVector(0), fpi0massbin(0) { //constructor } AliJCard::AliJCard(const char *filename): AliJBaseCard(filename), fhCorr(0), feventV3kv(0), fIndexVector(0), fpi0massbin(0) { //constructor InitCard(); MakeFastCorrTypeIndex(); } AliJCard::AliJCard(const AliJCard& obj) : AliJBaseCard(), fhCorr(obj.fhCorr), feventV3kv(obj.feventV3kv), fIndexVector(obj.fIndexVector), fpi0massbin(obj.fpi0massbin) { // copy constructor JUNUSED(obj); } AliJCard& AliJCard::operator=(const AliJCard& obj){ // copy constructor JUNUSED(obj); return *this; } AliJCard::~AliJCard(){ // destructor if( fpi0massbin ){ for( int i = 0; i < GetNoOfBins( kCentrType ); i++ ){ delete [] fpi0massbin[i]; } // destructor delete [] fpi0massbin; } if( fhCorr ){ delete fhCorr; } } void AliJCard::MakeFastCorrTypeIndex(){ // make fast findex array for( unsigned int i=0;iGet("UpperPairPtCut",i)) i++; if(i -1 ){ return (int) fValuesVector[findex].GetNrows(); }else{ cout<<"ERROR: fValuesVector fast findex out of range "<< findex << " " << (GetKeyWord( ctype )).Data() << endl; exit(1); } } float AliJCard::Get(corrType ctype, int VectorComponent){ //returns VectorComponent Component of fValuesVecto`uor TVector for given keyword return Get(GetKeyWord(ctype), VectorComponent); } float AliJCard::GetFast(corrType ctype, int VectorComponent){ // fast get if(0<=VectorComponent && VectorComponent -1 ){ return fValuesVector[fIndexVector[ctype]][VectorComponent+1]; }else{ cout<<"ERROR: fValuesVector fast findex out of range "<< (GetKeyWord(ctype)).Data()< -1 ){ cout<<" (dim ="<GetNrows(), v->GetMatrixArray(), val ); if( iBin2 >= v->GetNrows()-1 ) iBin2 = -1; return iBin2; } int AliJCard::GetBinFast(corrType ctype, float val){ // fast get bin if(ctype == kNoType) return 0; for(int i=0; i<(GetNFast(ctype)-1); i++) if(GetFast(ctype,i)<=val && val 0; //masking on >0 masking off ==0 desired trigger } bool AliJCard::SimilarVertZ(float Z1, float Z2){ // z vert static double v = Get("maxMixDZ"); if( v < 0 ) return 1; return fabs(Z1-Z2) < v ; } bool AliJCard::SimilarMultiplicity(float mult1, float mult2){ // multi static double v = Get("maxMixDMult"); if( v <0) return 1; return fabs(mult1-mult2) < v; } bool AliJCard::SimilarCentrality(float c1, float c2, int cbin){ // centra static TVector *v = GetVector("maxDCent"); if(v==NULL) return 1; return fabs(c1-c2) < (*v)[cbin+1]; // TODO } //--------- P H E N I X C G L -------------- bool AliJCard::InPhiRange(float Phi){ // phi bool isIn = false; for(int i=1; i Get("MaxChi2PerClusterTPC")) isGoodTrack = false; return isGoodTrack; } bool AliJCard::CheckMinNumTPCClustPt(int NClustersTPC, float fpt){ // tpc pars float minNTPCCls = Get("ParMinNClustTPCPt",0)*log(Get("ParMinNClustTPCPt",1)*fpt + Get("ParMinNClustTPCPt",2)); if(NClustersTPC > minNTPCCls) return true; //track had enough clusters else return false; //track did not have sufficient number of clusters } bool AliJCard::CheckTrackImpact(float xyIm, float zIm, float fpt){ // tpc pars bool isGoodTrack = true; if(TMath::Abs(xyIm) > Get("ParMaxDCAToVertexXYPtDep",0)+Get("ParMaxDCAToVertexXYPtDep",1)/pow(fpt,Get("ParMaxDCAToVertexXYPtDep",2))){ isGoodTrack = false; } if(TMath::Abs(zIm) > Get("MaxDCAToVertexZ")) isGoodTrack = false; return isGoodTrack; } bool AliJCard::DeltaEtaCheck(const AliJBaseTrack *ftk1, const AliJBaseTrack *ftk2) { // deta double delta = fabs( log(tan(ftk1->Theta()/2.0)) - log(tan(ftk2->Theta()/2.0)) ); if(Get("etaCut")>0) return delta < Get("etaCut"); if(Get("etaCut")<0) return delta > Get("etaCut"); return true; }