#include "AliFemtoV0PairCut.h"
#include <string>
#include <cstdio>
#ifdef __ROOT__
ClassImp(AliFemtoV0PairCut)
#endif
AliFemtoV0PairCut::AliFemtoV0PairCut():
fNPairsPassed(0),
fNPairsFailed(0),
fV0Max(1.0),
fShareFractionMax(1.0),
fRemoveSameLabel(0),
fDataType(kAOD),
fDTPCMin(0),
fDTPCExitMin(0),
fMinAvgSepPosPos(0),
fMinAvgSepPosNeg(0),
fMinAvgSepNegPos(0),
fMinAvgSepNegNeg(0)
{
}
AliFemtoV0PairCut::~AliFemtoV0PairCut(){
}
AliFemtoV0PairCut& AliFemtoV0PairCut::operator=(const AliFemtoV0PairCut& cut)
{
if (this != &cut) {
AliFemtoPairCut::operator=(cut);
fNPairsPassed = 0;
fNPairsFailed =0;
fV0Max = 1.0;
fShareFractionMax = 1.0;
fRemoveSameLabel = 0;
fDataType = kAOD;
fDTPCMin = 0;
fDTPCExitMin = 0;
fMinAvgSepPosPos = 0;
fMinAvgSepPosNeg = 0;
fMinAvgSepNegPos = 0;
fMinAvgSepNegNeg = 0;
}
return *this;
}
bool AliFemtoV0PairCut::Pass(const AliFemtoPair* pair){
bool temp = true;
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()->V0()->NominalTpcEntrancePointPos().x();
double disty = pair->Track1()->V0()->NominalTpcEntrancePointPos().y() - pair->Track2()->V0()->NominalTpcEntrancePointPos().y();
double distz = pair->Track1()->V0()->NominalTpcEntrancePointPos().z() - pair->Track2()->V0()->NominalTpcEntrancePointPos().z();
double distPos = sqrt(distx*distx + disty*disty + distz*distz);
distx = pair->Track1()->V0()->NominalTpcEntrancePointNeg().x() - pair->Track2()->V0()->NominalTpcEntrancePointNeg().x();
disty = pair->Track1()->V0()->NominalTpcEntrancePointNeg().y() - pair->Track2()->V0()->NominalTpcEntrancePointNeg().y();
distz = pair->Track1()->V0()->NominalTpcEntrancePointNeg().z() - pair->Track2()->V0()->NominalTpcEntrancePointNeg().z();
double distNeg = sqrt(distx*distx + disty*disty + distz*distz);
double distExitX = pair->Track1()->V0()->NominalTpcExitPointPos().x() - pair->Track2()->V0()->NominalTpcExitPointPos().x();
double distExitY = pair->Track1()->V0()->NominalTpcExitPointPos().y() - pair->Track2()->V0()->NominalTpcExitPointPos().y();
double distExitZ = pair->Track1()->V0()->NominalTpcExitPointPos().z() - pair->Track2()->V0()->NominalTpcExitPointPos().z();
double distExitPos = sqrt(distExitX*distExitX + distExitY*distExitY + distExitZ*distExitZ);
distExitX = pair->Track1()->V0()->NominalTpcExitPointNeg().x() - pair->Track2()->V0()->NominalTpcExitPointNeg().x();
distExitY = pair->Track1()->V0()->NominalTpcExitPointNeg().y() - pair->Track2()->V0()->NominalTpcExitPointNeg().y();
distExitZ = pair->Track1()->V0()->NominalTpcExitPointNeg().z() - pair->Track2()->V0()->NominalTpcExitPointNeg().z();
double distExitNeg = sqrt(distExitX*distExitX + distExitY*distExitY + distExitZ*distExitZ);
tempTPCEntrancePos = distPos > fDTPCMin;
tempTPCEntranceNeg = distNeg > fDTPCMin;
tempTPCExitPos = distExitPos > fDTPCExitMin;
tempTPCExitNeg = distExitNeg > fDTPCExitMin;
}
if(!(pair->Track1()->V0() && pair->Track2()->V0()))
{
return false;
}
if(pair->Track1()->V0()->IdNeg()==pair->Track2()->V0()->IdNeg() || pair->Track1()->V0()->IdPos()==pair->Track2()->V0()->IdPos())
{
return false;
}
if(!tempTPCEntrancePos || !tempTPCEntranceNeg || !tempTPCExitPos || !tempTPCExitNeg) return false;
double avgSep=0;
AliFemtoThreeVector first, second, tmp;
for(int i=0; i<8 ;i++)
{
tmp = pair->Track1()->V0()->NominalTpcPointPos(i);
first.SetX((double)(tmp.x()));
first.SetY((double)tmp.y());
first.SetZ((double)tmp.z());
tmp = pair->Track2()->V0()->NominalTpcPointPos(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<fMinAvgSepPosPos) return false;
avgSep = 0;
for(int i=0; i<8 ;i++)
{
tmp = pair->Track1()->V0()->NominalTpcPointPos(i);
first.SetX((double)(tmp.x()));
first.SetY((double)tmp.y());
first.SetZ((double)tmp.z());
tmp = pair->Track2()->V0()->NominalTpcPointNeg(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<fMinAvgSepPosNeg) return false;
avgSep = 0;
for(int i=0; i<8 ;i++)
{
tmp = pair->Track1()->V0()->NominalTpcPointNeg(i);
first.SetX((double)(tmp.x()));
first.SetY((double)tmp.y());
first.SetZ((double)tmp.z());
tmp = pair->Track2()->V0()->NominalTpcPointPos(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<fMinAvgSepNegPos) return false;
avgSep = 0;
for(int i=0; i<8 ;i++)
{
tmp = pair->Track1()->V0()->NominalTpcPointNeg(i);
first.SetX((double)(tmp.x()));
first.SetY((double)tmp.y());
first.SetZ((double)tmp.z());
tmp = pair->Track2()->V0()->NominalTpcPointNeg(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<fMinAvgSepNegNeg) return false;
avgSep = 0;
return temp;
}
AliFemtoString AliFemtoV0PairCut::Report(){
string stemp = "AliFemtoV0 Pair Cut - remove shared and split pairs\n"; char ctemp[100];
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;}
void AliFemtoV0PairCut::SetV0Max(Double_t aV0Max) {
fV0Max = aV0Max;
}
Double_t AliFemtoV0PairCut::GetAliFemtoV0Max() const {
return fV0Max;
}
TList *AliFemtoV0PairCut::ListSettings()
{
TList *tListSetttings = new TList();
char buf[200];
snprintf(buf, 200, "AliFemtoV0PairCut.sharequalitymax=%f", fV0Max);
snprintf(buf, 200, "AliFemtoV0PairCut.sharefractionmax=%f", fShareFractionMax);
tListSetttings->AddLast(new TObjString(buf));
return tListSetttings;
}
void AliFemtoV0PairCut::SetRemoveSameLabel(Bool_t aRemove)
{
fRemoveSameLabel = aRemove;
}
void AliFemtoV0PairCut::SetDataType(AliFemtoDataType type)
{
fDataType = type;
}
void AliFemtoV0PairCut::SetTPCEntranceSepMinimum(double dtpc)
{
fDTPCMin = dtpc;
}
void AliFemtoV0PairCut::SetTPCExitSepMinimum(double dtpc)
{
fDTPCExitMin = dtpc;
}
void AliFemtoV0PairCut::SetMinAvgSeparation(int type, double minSep)
{
if(type == 0)
fMinAvgSepPosPos = minSep;
else if(type == 1)
fMinAvgSepPosNeg = minSep;
else if(type == 2)
fMinAvgSepNegPos = minSep;
else if(type == 3)
fMinAvgSepNegNeg = minSep;
}
AliFemtoV0PairCut.cxx:100 AliFemtoV0PairCut.cxx:101 AliFemtoV0PairCut.cxx:102 AliFemtoV0PairCut.cxx:103 AliFemtoV0PairCut.cxx:104 AliFemtoV0PairCut.cxx:105 AliFemtoV0PairCut.cxx:106 AliFemtoV0PairCut.cxx:107 AliFemtoV0PairCut.cxx:108 AliFemtoV0PairCut.cxx:109 AliFemtoV0PairCut.cxx:110 AliFemtoV0PairCut.cxx:111 AliFemtoV0PairCut.cxx:112 AliFemtoV0PairCut.cxx:113 AliFemtoV0PairCut.cxx:114 AliFemtoV0PairCut.cxx:115 AliFemtoV0PairCut.cxx:116 AliFemtoV0PairCut.cxx:117 AliFemtoV0PairCut.cxx:118 AliFemtoV0PairCut.cxx:119 AliFemtoV0PairCut.cxx:120 AliFemtoV0PairCut.cxx:121 AliFemtoV0PairCut.cxx:122 AliFemtoV0PairCut.cxx:123 AliFemtoV0PairCut.cxx:124 AliFemtoV0PairCut.cxx:125 AliFemtoV0PairCut.cxx:126 AliFemtoV0PairCut.cxx:127 AliFemtoV0PairCut.cxx:128 AliFemtoV0PairCut.cxx:129 AliFemtoV0PairCut.cxx:130 AliFemtoV0PairCut.cxx:131 AliFemtoV0PairCut.cxx:132 AliFemtoV0PairCut.cxx:133 AliFemtoV0PairCut.cxx:134 AliFemtoV0PairCut.cxx:135 AliFemtoV0PairCut.cxx:136 AliFemtoV0PairCut.cxx:137 AliFemtoV0PairCut.cxx:138 AliFemtoV0PairCut.cxx:139 AliFemtoV0PairCut.cxx:140 AliFemtoV0PairCut.cxx:141 AliFemtoV0PairCut.cxx:142 AliFemtoV0PairCut.cxx:143 AliFemtoV0PairCut.cxx:144 AliFemtoV0PairCut.cxx:145 AliFemtoV0PairCut.cxx:146 AliFemtoV0PairCut.cxx:147 AliFemtoV0PairCut.cxx:148 AliFemtoV0PairCut.cxx:149 AliFemtoV0PairCut.cxx:150 AliFemtoV0PairCut.cxx:151 AliFemtoV0PairCut.cxx:152 AliFemtoV0PairCut.cxx:153 AliFemtoV0PairCut.cxx:154 AliFemtoV0PairCut.cxx:155 AliFemtoV0PairCut.cxx:156 AliFemtoV0PairCut.cxx:157 AliFemtoV0PairCut.cxx:158 AliFemtoV0PairCut.cxx:159 AliFemtoV0PairCut.cxx:160 AliFemtoV0PairCut.cxx:161 AliFemtoV0PairCut.cxx:162 AliFemtoV0PairCut.cxx:163 AliFemtoV0PairCut.cxx:164 AliFemtoV0PairCut.cxx:165 AliFemtoV0PairCut.cxx:166 AliFemtoV0PairCut.cxx:167 AliFemtoV0PairCut.cxx:168 AliFemtoV0PairCut.cxx:169 AliFemtoV0PairCut.cxx:170 AliFemtoV0PairCut.cxx:171 AliFemtoV0PairCut.cxx:172 AliFemtoV0PairCut.cxx:173 AliFemtoV0PairCut.cxx:174 AliFemtoV0PairCut.cxx:175 AliFemtoV0PairCut.cxx:176 AliFemtoV0PairCut.cxx:177 AliFemtoV0PairCut.cxx:178 AliFemtoV0PairCut.cxx:179 AliFemtoV0PairCut.cxx:180 AliFemtoV0PairCut.cxx:181 AliFemtoV0PairCut.cxx:182 AliFemtoV0PairCut.cxx:183 AliFemtoV0PairCut.cxx:184 AliFemtoV0PairCut.cxx:185 AliFemtoV0PairCut.cxx:186 AliFemtoV0PairCut.cxx:187 AliFemtoV0PairCut.cxx:188 AliFemtoV0PairCut.cxx:189 AliFemtoV0PairCut.cxx:190 AliFemtoV0PairCut.cxx:191 AliFemtoV0PairCut.cxx:192 AliFemtoV0PairCut.cxx:193 AliFemtoV0PairCut.cxx:194 AliFemtoV0PairCut.cxx:195 AliFemtoV0PairCut.cxx:196 AliFemtoV0PairCut.cxx:197 AliFemtoV0PairCut.cxx:198 AliFemtoV0PairCut.cxx:199 AliFemtoV0PairCut.cxx:200 AliFemtoV0PairCut.cxx:201 AliFemtoV0PairCut.cxx:202 AliFemtoV0PairCut.cxx:203 AliFemtoV0PairCut.cxx:204 AliFemtoV0PairCut.cxx:205 AliFemtoV0PairCut.cxx:206 AliFemtoV0PairCut.cxx:207 AliFemtoV0PairCut.cxx:208 AliFemtoV0PairCut.cxx:209 AliFemtoV0PairCut.cxx:210 AliFemtoV0PairCut.cxx:211 AliFemtoV0PairCut.cxx:212 AliFemtoV0PairCut.cxx:213 AliFemtoV0PairCut.cxx:214 AliFemtoV0PairCut.cxx:215 AliFemtoV0PairCut.cxx:216 AliFemtoV0PairCut.cxx:217 AliFemtoV0PairCut.cxx:218 AliFemtoV0PairCut.cxx:219 AliFemtoV0PairCut.cxx:220 AliFemtoV0PairCut.cxx:221 AliFemtoV0PairCut.cxx:222 AliFemtoV0PairCut.cxx:223 AliFemtoV0PairCut.cxx:224 AliFemtoV0PairCut.cxx:225 AliFemtoV0PairCut.cxx:226 AliFemtoV0PairCut.cxx:227 AliFemtoV0PairCut.cxx:228 AliFemtoV0PairCut.cxx:229 AliFemtoV0PairCut.cxx:230 AliFemtoV0PairCut.cxx:231 AliFemtoV0PairCut.cxx:232 AliFemtoV0PairCut.cxx:233 AliFemtoV0PairCut.cxx:234 AliFemtoV0PairCut.cxx:235 AliFemtoV0PairCut.cxx:236 AliFemtoV0PairCut.cxx:237 AliFemtoV0PairCut.cxx:238 AliFemtoV0PairCut.cxx:239 AliFemtoV0PairCut.cxx:240 AliFemtoV0PairCut.cxx:241 AliFemtoV0PairCut.cxx:242 AliFemtoV0PairCut.cxx:243 AliFemtoV0PairCut.cxx:244 AliFemtoV0PairCut.cxx:245 AliFemtoV0PairCut.cxx:246 AliFemtoV0PairCut.cxx:247 AliFemtoV0PairCut.cxx:248 AliFemtoV0PairCut.cxx:249 AliFemtoV0PairCut.cxx:250 AliFemtoV0PairCut.cxx:251 AliFemtoV0PairCut.cxx:252 AliFemtoV0PairCut.cxx:253 AliFemtoV0PairCut.cxx:254 AliFemtoV0PairCut.cxx:255 AliFemtoV0PairCut.cxx:256 AliFemtoV0PairCut.cxx:257 AliFemtoV0PairCut.cxx:258 AliFemtoV0PairCut.cxx:259 AliFemtoV0PairCut.cxx:260 AliFemtoV0PairCut.cxx:261 AliFemtoV0PairCut.cxx:262 AliFemtoV0PairCut.cxx:263 AliFemtoV0PairCut.cxx:264 AliFemtoV0PairCut.cxx:265 AliFemtoV0PairCut.cxx:266 AliFemtoV0PairCut.cxx:267 AliFemtoV0PairCut.cxx:268 AliFemtoV0PairCut.cxx:269 AliFemtoV0PairCut.cxx:270 AliFemtoV0PairCut.cxx:271 AliFemtoV0PairCut.cxx:272 AliFemtoV0PairCut.cxx:273 AliFemtoV0PairCut.cxx:274 AliFemtoV0PairCut.cxx:275 AliFemtoV0PairCut.cxx:276 AliFemtoV0PairCut.cxx:277 AliFemtoV0PairCut.cxx:278 AliFemtoV0PairCut.cxx:279 AliFemtoV0PairCut.cxx:280 AliFemtoV0PairCut.cxx:281 AliFemtoV0PairCut.cxx:282 AliFemtoV0PairCut.cxx:283