#include "AliRsnCutPrimaryVertex.h"
#include "AliAnalysisUtils.h"
ClassImp(AliRsnCutPrimaryVertex)
AliRsnCutPrimaryVertex::AliRsnCutPrimaryVertex
(const char *name, Double_t maxVz, Int_t nContributors, Bool_t acceptTPC, Bool_t acceptSPD) :
AliRsnCut(name, AliRsnCut::kEvent, 0, nContributors - 1, -maxVz, maxVz + 1E-6),
fAcceptTPC(acceptTPC),
fAcceptSPD(acceptSPD),
fCheckPileUp(kFALSE)
{
}
Bool_t AliRsnCutPrimaryVertex::IsSelected(TObject *object)
{
if (!TargetOK(object)) return kFALSE;
AliESDEvent *esd = dynamic_cast<AliESDEvent *>(fEvent->GetRef());
AliAODEvent *aod = dynamic_cast<AliAODEvent *>(fEvent->GetRef());
AliVEvent *vevt = dynamic_cast<AliVEvent *>(fEvent->GetRef());
if (fCheckPileUp) {
AliAnalysisUtils * utils = new AliAnalysisUtils();
if (utils->IsPileUpSPD(vevt)) return kFALSE;
}
if (esd) {
const AliESDVertex *vTrk = esd->GetPrimaryVertexTracks();
const AliESDVertex *vSPD = esd->GetPrimaryVertexSPD();
const AliESDVertex *vTPC = esd->GetPrimaryVertexTPC();
Int_t ncTrk = -1;
Int_t ncSPD = -1;
Int_t ncTPC = -1;
Double_t vzTrk = 1000000.0;
Double_t vzSPD = 1000000.0;
Double_t vzTPC = 1000000.0;
if (vTrk) vzTrk = TMath::Abs(vTrk->GetZ());
if (vSPD) vzSPD = TMath::Abs(vSPD->GetZ());
if (vTPC) vzTPC = TMath::Abs(vTPC->GetZ());
if (vTrk) ncTrk = (Int_t)vTrk->GetNContributors();
if (vSPD) ncSPD = (Int_t)vSPD->GetNContributors();
if (vTPC) ncTPC = (Int_t)vTPC->GetNContributors();
if (vTrk && ncTrk > 0) {
fCutValueI = ncTrk;
fCutValueD = vzTrk;
} else if (vSPD && ncSPD > 0) {
if (!fAcceptSPD)
return kFALSE;
else {
fCutValueI = ncSPD;
fCutValueD = vzSPD;
}
} else if (vTPC && ncTPC > 0) {
if (!fAcceptTPC)
return kFALSE;
else {
fCutValueI = ncTPC;
fCutValueD = vzTPC;
}
} else
return kFALSE;
} else if (aod) {
if(fAcceptSPD){
AliAODVertex *aodv = aod->GetPrimaryVertexSPD();
if (!aodv) {
AliDebugClass(1, "Not found SPD vertex --> TPC only available, skipped");
return kFALSE;
}
aodv = (AliAODVertex *)aod->GetPrimaryVertex();
if (CheckVertex(aodv)) {
AliDebugClass(1, "Vertex TRK is OK");
fCutValueD = aodv->GetZ();
fCutValueI = aodv->GetNDaughters();
}
else {
aodv = aod->GetPrimaryVertexSPD();
if (CheckVertex(aodv)) {
AliDebugClass(1, "Vertex TRK is BAD, but vertex SPD is OK");
fCutValueD = aodv->GetZ();
fCutValueI = aodv->GetNDaughters();
} else {
AliDebugClass(1, "Vertex TRK is BAD, and vertex SPD is BAD");
return kFALSE;
}
}
}
else{
const AliVVertex *vertex = aod->GetPrimaryVertex();
if(!vertex) return kFALSE;
else{
TString title=vertex->GetTitle();
if(title.Contains("Z") ) return kFALSE;
else if(title.Contains("3D") ) return kFALSE;
fCutValueI = vertex->GetNContributors();
fCutValueD = TMath::Abs(vertex->GetZ());
}
}
} else
return kFALSE;
Bool_t result = ((!OkRangeI()) && OkRangeD());
return result;
}
void AliRsnCutPrimaryVertex::Print(const Option_t *) const
{
AliInfo(Form("Cut name : %s", GetName()));
AliInfo(Form("Accepting TPC primary vertex : %s", (fAcceptTPC ? "YES" : "NO")));
AliInfo(Form("Accepting SPD primary vertex : %s", (fAcceptSPD ? "YES" : "NO")));
AliInfo(Form("Contributors range (outside) : %d - %d", fMinI, fMaxI));
AliInfo(Form("Z-vertex range (inside) : %f - %f", fMinD, fMaxD));
}
Bool_t AliRsnCutPrimaryVertex::CheckVertex(AliVVertex *vertex)
{
if (!vertex) return kFALSE;
if (vertex->GetNContributors() < 1) return kFALSE;
return kTRUE;
}
AliRsnCutPrimaryVertex.cxx:1 AliRsnCutPrimaryVertex.cxx:2 AliRsnCutPrimaryVertex.cxx:3 AliRsnCutPrimaryVertex.cxx:4 AliRsnCutPrimaryVertex.cxx:5 AliRsnCutPrimaryVertex.cxx:6 AliRsnCutPrimaryVertex.cxx:7 AliRsnCutPrimaryVertex.cxx:8 AliRsnCutPrimaryVertex.cxx:9 AliRsnCutPrimaryVertex.cxx:10 AliRsnCutPrimaryVertex.cxx:11 AliRsnCutPrimaryVertex.cxx:12 AliRsnCutPrimaryVertex.cxx:13 AliRsnCutPrimaryVertex.cxx:14 AliRsnCutPrimaryVertex.cxx:15 AliRsnCutPrimaryVertex.cxx:16 AliRsnCutPrimaryVertex.cxx:17 AliRsnCutPrimaryVertex.cxx:18 AliRsnCutPrimaryVertex.cxx:19 AliRsnCutPrimaryVertex.cxx:20 AliRsnCutPrimaryVertex.cxx:21 AliRsnCutPrimaryVertex.cxx:22 AliRsnCutPrimaryVertex.cxx:23 AliRsnCutPrimaryVertex.cxx:24 AliRsnCutPrimaryVertex.cxx:25 AliRsnCutPrimaryVertex.cxx:26 AliRsnCutPrimaryVertex.cxx:27 AliRsnCutPrimaryVertex.cxx:28 AliRsnCutPrimaryVertex.cxx:29 AliRsnCutPrimaryVertex.cxx:30 AliRsnCutPrimaryVertex.cxx:31 AliRsnCutPrimaryVertex.cxx:32 AliRsnCutPrimaryVertex.cxx:33 AliRsnCutPrimaryVertex.cxx:34 AliRsnCutPrimaryVertex.cxx:35 AliRsnCutPrimaryVertex.cxx:36 AliRsnCutPrimaryVertex.cxx:37 AliRsnCutPrimaryVertex.cxx:38 AliRsnCutPrimaryVertex.cxx:39 AliRsnCutPrimaryVertex.cxx:40 AliRsnCutPrimaryVertex.cxx:41 AliRsnCutPrimaryVertex.cxx:42 AliRsnCutPrimaryVertex.cxx:43 AliRsnCutPrimaryVertex.cxx:44 AliRsnCutPrimaryVertex.cxx:45 AliRsnCutPrimaryVertex.cxx:46 AliRsnCutPrimaryVertex.cxx:47 AliRsnCutPrimaryVertex.cxx:48 AliRsnCutPrimaryVertex.cxx:49 AliRsnCutPrimaryVertex.cxx:50 AliRsnCutPrimaryVertex.cxx:51 AliRsnCutPrimaryVertex.cxx:52 AliRsnCutPrimaryVertex.cxx:53 AliRsnCutPrimaryVertex.cxx:54 AliRsnCutPrimaryVertex.cxx:55 AliRsnCutPrimaryVertex.cxx:56 AliRsnCutPrimaryVertex.cxx:57 AliRsnCutPrimaryVertex.cxx:58 AliRsnCutPrimaryVertex.cxx:59 AliRsnCutPrimaryVertex.cxx:60 AliRsnCutPrimaryVertex.cxx:61 AliRsnCutPrimaryVertex.cxx:62 AliRsnCutPrimaryVertex.cxx:63 AliRsnCutPrimaryVertex.cxx:64 AliRsnCutPrimaryVertex.cxx:65 AliRsnCutPrimaryVertex.cxx:66 AliRsnCutPrimaryVertex.cxx:67 AliRsnCutPrimaryVertex.cxx:68 AliRsnCutPrimaryVertex.cxx:69 AliRsnCutPrimaryVertex.cxx:70 AliRsnCutPrimaryVertex.cxx:71 AliRsnCutPrimaryVertex.cxx:72 AliRsnCutPrimaryVertex.cxx:73 AliRsnCutPrimaryVertex.cxx:74 AliRsnCutPrimaryVertex.cxx:75 AliRsnCutPrimaryVertex.cxx:76 AliRsnCutPrimaryVertex.cxx:77 AliRsnCutPrimaryVertex.cxx:78 AliRsnCutPrimaryVertex.cxx:79 AliRsnCutPrimaryVertex.cxx:80 AliRsnCutPrimaryVertex.cxx:81 AliRsnCutPrimaryVertex.cxx:82 AliRsnCutPrimaryVertex.cxx:83 AliRsnCutPrimaryVertex.cxx:84 AliRsnCutPrimaryVertex.cxx:85 AliRsnCutPrimaryVertex.cxx:86 AliRsnCutPrimaryVertex.cxx:87 AliRsnCutPrimaryVertex.cxx:88 AliRsnCutPrimaryVertex.cxx:89 AliRsnCutPrimaryVertex.cxx:90 AliRsnCutPrimaryVertex.cxx:91 AliRsnCutPrimaryVertex.cxx:92 AliRsnCutPrimaryVertex.cxx:93 AliRsnCutPrimaryVertex.cxx:94 AliRsnCutPrimaryVertex.cxx:95 AliRsnCutPrimaryVertex.cxx:96 AliRsnCutPrimaryVertex.cxx:97 AliRsnCutPrimaryVertex.cxx:98 AliRsnCutPrimaryVertex.cxx:99 AliRsnCutPrimaryVertex.cxx:100 AliRsnCutPrimaryVertex.cxx:101 AliRsnCutPrimaryVertex.cxx:102 AliRsnCutPrimaryVertex.cxx:103 AliRsnCutPrimaryVertex.cxx:104 AliRsnCutPrimaryVertex.cxx:105 AliRsnCutPrimaryVertex.cxx:106 AliRsnCutPrimaryVertex.cxx:107 AliRsnCutPrimaryVertex.cxx:108 AliRsnCutPrimaryVertex.cxx:109 AliRsnCutPrimaryVertex.cxx:110 AliRsnCutPrimaryVertex.cxx:111 AliRsnCutPrimaryVertex.cxx:112 AliRsnCutPrimaryVertex.cxx:113 AliRsnCutPrimaryVertex.cxx:114 AliRsnCutPrimaryVertex.cxx:115 AliRsnCutPrimaryVertex.cxx:116 AliRsnCutPrimaryVertex.cxx:117 AliRsnCutPrimaryVertex.cxx:118 AliRsnCutPrimaryVertex.cxx:119 AliRsnCutPrimaryVertex.cxx:120 AliRsnCutPrimaryVertex.cxx:121 AliRsnCutPrimaryVertex.cxx:122 AliRsnCutPrimaryVertex.cxx:123 AliRsnCutPrimaryVertex.cxx:124 AliRsnCutPrimaryVertex.cxx:125 AliRsnCutPrimaryVertex.cxx:126 AliRsnCutPrimaryVertex.cxx:127 AliRsnCutPrimaryVertex.cxx:128 AliRsnCutPrimaryVertex.cxx:129 AliRsnCutPrimaryVertex.cxx:130 AliRsnCutPrimaryVertex.cxx:131 AliRsnCutPrimaryVertex.cxx:132 AliRsnCutPrimaryVertex.cxx:133 AliRsnCutPrimaryVertex.cxx:134 AliRsnCutPrimaryVertex.cxx:135 AliRsnCutPrimaryVertex.cxx:136 AliRsnCutPrimaryVertex.cxx:137 AliRsnCutPrimaryVertex.cxx:138 AliRsnCutPrimaryVertex.cxx:139 AliRsnCutPrimaryVertex.cxx:140 AliRsnCutPrimaryVertex.cxx:141 AliRsnCutPrimaryVertex.cxx:142 AliRsnCutPrimaryVertex.cxx:143 AliRsnCutPrimaryVertex.cxx:144 AliRsnCutPrimaryVertex.cxx:145 AliRsnCutPrimaryVertex.cxx:146 AliRsnCutPrimaryVertex.cxx:147 AliRsnCutPrimaryVertex.cxx:148 AliRsnCutPrimaryVertex.cxx:149 AliRsnCutPrimaryVertex.cxx:150 AliRsnCutPrimaryVertex.cxx:151 AliRsnCutPrimaryVertex.cxx:152 AliRsnCutPrimaryVertex.cxx:153 AliRsnCutPrimaryVertex.cxx:154 AliRsnCutPrimaryVertex.cxx:155 AliRsnCutPrimaryVertex.cxx:156 AliRsnCutPrimaryVertex.cxx:157 AliRsnCutPrimaryVertex.cxx:158 AliRsnCutPrimaryVertex.cxx:159 AliRsnCutPrimaryVertex.cxx:160 AliRsnCutPrimaryVertex.cxx:161 AliRsnCutPrimaryVertex.cxx:162 AliRsnCutPrimaryVertex.cxx:163 AliRsnCutPrimaryVertex.cxx:164 AliRsnCutPrimaryVertex.cxx:165 AliRsnCutPrimaryVertex.cxx:166 AliRsnCutPrimaryVertex.cxx:167 AliRsnCutPrimaryVertex.cxx:168 AliRsnCutPrimaryVertex.cxx:169 AliRsnCutPrimaryVertex.cxx:170 AliRsnCutPrimaryVertex.cxx:171 AliRsnCutPrimaryVertex.cxx:172 AliRsnCutPrimaryVertex.cxx:173 AliRsnCutPrimaryVertex.cxx:174 AliRsnCutPrimaryVertex.cxx:175