#include <TMath.h>
#include "AliDielectronTrackCuts.h"
#include "AliVTrack.h"
#include "AliAODTrack.h"
ClassImp(AliDielectronTrackCuts)
AliDielectronTrackCuts::AliDielectronTrackCuts() :
AliAnalysisCuts(),
fV0DaughterCut(0),
fNegateV0DauterCut(kFALSE),
fITSclusterBitMap(0),
fITSclusterCutType(kOneOf),
fRequireITSRefit(kFALSE),
fRequireTPCRefit(kFALSE),
fTPCNclRobustCut(-1),
fTPCcrossedOverFindable(-1.),
fAODFilterBit(kSwitchOff),
fWaiveITSNcls(-1)
{
for (Int_t i = 0; i < 3; i++)
fCutClusterRequirementITS[i] = kOff;
}
AliDielectronTrackCuts::AliDielectronTrackCuts(const char* name, const char* title) :
AliAnalysisCuts(name, title),
fV0DaughterCut(0),
fNegateV0DauterCut(kFALSE),
fITSclusterBitMap(0),
fITSclusterCutType(kOneOf),
fRequireITSRefit(kFALSE),
fRequireTPCRefit(kFALSE),
fTPCNclRobustCut(-1),
fTPCcrossedOverFindable(-1.),
fAODFilterBit(kSwitchOff),
fWaiveITSNcls(-1)
{
for (Int_t i = 0; i < 3; i++)
fCutClusterRequirementITS[i] = kOff;
}
AliDielectronTrackCuts::~AliDielectronTrackCuts()
{
}
Bool_t AliDielectronTrackCuts::IsSelected(TObject* track)
{
AliVTrack *vtrack=dynamic_cast<AliVTrack*>(track);
if (!vtrack) return kFALSE;
Bool_t accept=kTRUE;
if (fV0DaughterCut) {
Bool_t isV0=track->TestBit(BIT(fV0DaughterCut));
if (fNegateV0DauterCut) isV0=!isV0;
accept*=isV0;
}
for (Int_t i=0;i<3;++i){
Bool_t layer1=TESTBIT(vtrack->GetITSClusterMap(),i*2);
Bool_t layer2=TESTBIT(vtrack->GetITSClusterMap(),i*2+1);
accept*=CheckITSClusterRequirement(fCutClusterRequirementITS[i], layer1, layer2);
}
if (fITSclusterBitMap) accept*=CheckITSClusterCut(vtrack->GetITSClusterMap());
if (fWaiveITSNcls > -1) {
Int_t nITScls = 0;
Int_t requiredNcls = 7;
for(Int_t i=5; i>=0; i--) {
if(TESTBIT(vtrack->GetITSClusterMap(),i)) {
nITScls++;
requiredNcls=6-fWaiveITSNcls-i;
}
}
accept*=(requiredNcls<=nITScls);
}
if (fRequireITSRefit) accept*=(vtrack->GetStatus()&AliVTrack::kITSrefit)>0;
if (fRequireTPCRefit) accept*=(vtrack->GetStatus()&AliVTrack::kTPCrefit)>0;
Int_t nclr=0;
if (fTPCNclRobustCut>0){
nclr=TMath::Nint(vtrack->GetTPCClusterInfo(2,1));
accept*=(nclr>fTPCNclRobustCut);
}
if (fTPCcrossedOverFindable > 0.) {
if(fTPCNclRobustCut<=0) nclr=TMath::Nint(vtrack->GetTPCClusterInfo(2,1));
Int_t tpcNclsF = vtrack->GetTPCNclsF();
accept*=(tpcNclsF);
if (tpcNclsF != 0) {
accept*=(((Double_t)nclr/(Double_t)vtrack->GetTPCNclsF()) >= fTPCcrossedOverFindable);
}
}
if (track->IsA()==AliAODTrack::Class() && fAODFilterBit!=kSwitchOff) {
accept*=((AliAODTrack*)track)->TestFilterBit(fAODFilterBit);
}
return accept;
}
void AliDielectronTrackCuts::SetV0DaughterCut(AliPID::EParticleType type, Bool_t negate)
{
const Int_t bitMap[5] = {14, -1, 15, -1, 16};
fV0DaughterCut=bitMap[type];
fNegateV0DauterCut=negate;
}
Bool_t AliDielectronTrackCuts::CheckITSClusterRequirement(ITSClusterRequirement req, Bool_t clusterL1, Bool_t clusterL2) const
{
switch (req)
{
case kOff: return kTRUE;
case kNone: return !clusterL1 && !clusterL2;
case kAny: return clusterL1 || clusterL2;
case kFirst: return clusterL1;
case kOnlyFirst: return clusterL1 && !clusterL2;
case kSecond: return clusterL2;
case kOnlySecond: return clusterL2 && !clusterL1;
case kBoth: return clusterL1 && clusterL2;
}
return kFALSE;
}
Bool_t AliDielectronTrackCuts::CheckITSClusterCut(UChar_t itsBits) const
{
switch (fITSclusterCutType){
case kOneOf: return itsBits & fITSclusterBitMap;
case kAtLeast: return (itsBits & fITSclusterBitMap)==fITSclusterBitMap;
case kExact: return (itsBits==fITSclusterBitMap);
}
return kTRUE;
}
AliDielectronTrackCuts.cxx:1 AliDielectronTrackCuts.cxx:2 AliDielectronTrackCuts.cxx:3 AliDielectronTrackCuts.cxx:4 AliDielectronTrackCuts.cxx:5 AliDielectronTrackCuts.cxx:6 AliDielectronTrackCuts.cxx:7 AliDielectronTrackCuts.cxx:8 AliDielectronTrackCuts.cxx:9 AliDielectronTrackCuts.cxx:10 AliDielectronTrackCuts.cxx:11 AliDielectronTrackCuts.cxx:12 AliDielectronTrackCuts.cxx:13 AliDielectronTrackCuts.cxx:14 AliDielectronTrackCuts.cxx:15 AliDielectronTrackCuts.cxx:16 AliDielectronTrackCuts.cxx:17 AliDielectronTrackCuts.cxx:18 AliDielectronTrackCuts.cxx:19 AliDielectronTrackCuts.cxx:20 AliDielectronTrackCuts.cxx:21 AliDielectronTrackCuts.cxx:22 AliDielectronTrackCuts.cxx:23 AliDielectronTrackCuts.cxx:24 AliDielectronTrackCuts.cxx:25 AliDielectronTrackCuts.cxx:26 AliDielectronTrackCuts.cxx:27 AliDielectronTrackCuts.cxx:28 AliDielectronTrackCuts.cxx:29 AliDielectronTrackCuts.cxx:30 AliDielectronTrackCuts.cxx:31 AliDielectronTrackCuts.cxx:32 AliDielectronTrackCuts.cxx:33 AliDielectronTrackCuts.cxx:34 AliDielectronTrackCuts.cxx:35 AliDielectronTrackCuts.cxx:36 AliDielectronTrackCuts.cxx:37 AliDielectronTrackCuts.cxx:38 AliDielectronTrackCuts.cxx:39 AliDielectronTrackCuts.cxx:40 AliDielectronTrackCuts.cxx:41 AliDielectronTrackCuts.cxx:42 AliDielectronTrackCuts.cxx:43 AliDielectronTrackCuts.cxx:44 AliDielectronTrackCuts.cxx:45 AliDielectronTrackCuts.cxx:46 AliDielectronTrackCuts.cxx:47 AliDielectronTrackCuts.cxx:48 AliDielectronTrackCuts.cxx:49 AliDielectronTrackCuts.cxx:50 AliDielectronTrackCuts.cxx:51 AliDielectronTrackCuts.cxx:52 AliDielectronTrackCuts.cxx:53 AliDielectronTrackCuts.cxx:54 AliDielectronTrackCuts.cxx:55 AliDielectronTrackCuts.cxx:56 AliDielectronTrackCuts.cxx:57 AliDielectronTrackCuts.cxx:58 AliDielectronTrackCuts.cxx:59 AliDielectronTrackCuts.cxx:60 AliDielectronTrackCuts.cxx:61 AliDielectronTrackCuts.cxx:62 AliDielectronTrackCuts.cxx:63 AliDielectronTrackCuts.cxx:64 AliDielectronTrackCuts.cxx:65 AliDielectronTrackCuts.cxx:66 AliDielectronTrackCuts.cxx:67 AliDielectronTrackCuts.cxx:68 AliDielectronTrackCuts.cxx:69 AliDielectronTrackCuts.cxx:70 AliDielectronTrackCuts.cxx:71 AliDielectronTrackCuts.cxx:72 AliDielectronTrackCuts.cxx:73 AliDielectronTrackCuts.cxx:74 AliDielectronTrackCuts.cxx:75 AliDielectronTrackCuts.cxx:76 AliDielectronTrackCuts.cxx:77 AliDielectronTrackCuts.cxx:78 AliDielectronTrackCuts.cxx:79 AliDielectronTrackCuts.cxx:80 AliDielectronTrackCuts.cxx:81 AliDielectronTrackCuts.cxx:82 AliDielectronTrackCuts.cxx:83 AliDielectronTrackCuts.cxx:84 AliDielectronTrackCuts.cxx:85 AliDielectronTrackCuts.cxx:86 AliDielectronTrackCuts.cxx:87 AliDielectronTrackCuts.cxx:88 AliDielectronTrackCuts.cxx:89 AliDielectronTrackCuts.cxx:90 AliDielectronTrackCuts.cxx:91 AliDielectronTrackCuts.cxx:92 AliDielectronTrackCuts.cxx:93 AliDielectronTrackCuts.cxx:94 AliDielectronTrackCuts.cxx:95 AliDielectronTrackCuts.cxx:96 AliDielectronTrackCuts.cxx:97 AliDielectronTrackCuts.cxx:98 AliDielectronTrackCuts.cxx:99 AliDielectronTrackCuts.cxx:100 AliDielectronTrackCuts.cxx:101 AliDielectronTrackCuts.cxx:102 AliDielectronTrackCuts.cxx:103 AliDielectronTrackCuts.cxx:104 AliDielectronTrackCuts.cxx:105 AliDielectronTrackCuts.cxx:106 AliDielectronTrackCuts.cxx:107 AliDielectronTrackCuts.cxx:108 AliDielectronTrackCuts.cxx:109 AliDielectronTrackCuts.cxx:110 AliDielectronTrackCuts.cxx:111 AliDielectronTrackCuts.cxx:112 AliDielectronTrackCuts.cxx:113 AliDielectronTrackCuts.cxx:114 AliDielectronTrackCuts.cxx:115 AliDielectronTrackCuts.cxx:116 AliDielectronTrackCuts.cxx:117 AliDielectronTrackCuts.cxx:118 AliDielectronTrackCuts.cxx:119 AliDielectronTrackCuts.cxx:120 AliDielectronTrackCuts.cxx:121 AliDielectronTrackCuts.cxx:122 AliDielectronTrackCuts.cxx:123 AliDielectronTrackCuts.cxx:124 AliDielectronTrackCuts.cxx:125 AliDielectronTrackCuts.cxx:126 AliDielectronTrackCuts.cxx:127 AliDielectronTrackCuts.cxx:128 AliDielectronTrackCuts.cxx:129 AliDielectronTrackCuts.cxx:130 AliDielectronTrackCuts.cxx:131 AliDielectronTrackCuts.cxx:132 AliDielectronTrackCuts.cxx:133 AliDielectronTrackCuts.cxx:134 AliDielectronTrackCuts.cxx:135 AliDielectronTrackCuts.cxx:136 AliDielectronTrackCuts.cxx:137 AliDielectronTrackCuts.cxx:138 AliDielectronTrackCuts.cxx:139 AliDielectronTrackCuts.cxx:140 AliDielectronTrackCuts.cxx:141 AliDielectronTrackCuts.cxx:142 AliDielectronTrackCuts.cxx:143 AliDielectronTrackCuts.cxx:144 AliDielectronTrackCuts.cxx:145 AliDielectronTrackCuts.cxx:146 AliDielectronTrackCuts.cxx:147 AliDielectronTrackCuts.cxx:148 AliDielectronTrackCuts.cxx:149 AliDielectronTrackCuts.cxx:150 AliDielectronTrackCuts.cxx:151 AliDielectronTrackCuts.cxx:152 AliDielectronTrackCuts.cxx:153 AliDielectronTrackCuts.cxx:154 AliDielectronTrackCuts.cxx:155 AliDielectronTrackCuts.cxx:156 AliDielectronTrackCuts.cxx:157 AliDielectronTrackCuts.cxx:158 AliDielectronTrackCuts.cxx:159 AliDielectronTrackCuts.cxx:160 AliDielectronTrackCuts.cxx:161 AliDielectronTrackCuts.cxx:162 AliDielectronTrackCuts.cxx:163 AliDielectronTrackCuts.cxx:164 AliDielectronTrackCuts.cxx:165 AliDielectronTrackCuts.cxx:166 AliDielectronTrackCuts.cxx:167 AliDielectronTrackCuts.cxx:168 AliDielectronTrackCuts.cxx:169 AliDielectronTrackCuts.cxx:170 AliDielectronTrackCuts.cxx:171 AliDielectronTrackCuts.cxx:172 AliDielectronTrackCuts.cxx:173 AliDielectronTrackCuts.cxx:174 AliDielectronTrackCuts.cxx:175 AliDielectronTrackCuts.cxx:176 AliDielectronTrackCuts.cxx:177 AliDielectronTrackCuts.cxx:178 AliDielectronTrackCuts.cxx:179 AliDielectronTrackCuts.cxx:180 AliDielectronTrackCuts.cxx:181 AliDielectronTrackCuts.cxx:182 AliDielectronTrackCuts.cxx:183 AliDielectronTrackCuts.cxx:184 AliDielectronTrackCuts.cxx:185 AliDielectronTrackCuts.cxx:186 AliDielectronTrackCuts.cxx:187 AliDielectronTrackCuts.cxx:188 AliDielectronTrackCuts.cxx:189 AliDielectronTrackCuts.cxx:190 AliDielectronTrackCuts.cxx:191 AliDielectronTrackCuts.cxx:192 AliDielectronTrackCuts.cxx:193 AliDielectronTrackCuts.cxx:194 AliDielectronTrackCuts.cxx:195 AliDielectronTrackCuts.cxx:196 AliDielectronTrackCuts.cxx:197 AliDielectronTrackCuts.cxx:198 AliDielectronTrackCuts.cxx:199 AliDielectronTrackCuts.cxx:200 AliDielectronTrackCuts.cxx:201 AliDielectronTrackCuts.cxx:202 AliDielectronTrackCuts.cxx:203