#include <iostream>
#include <TList.h>
#include "AliLog.h"
#include "AliESDEvent.h"
#include "AliESDVertex.h"
#include "AliMCEvent.h"
#include "AliHeader.h"
#include "AliGenEventHeader.h"
#include "AlidNdPtEventCuts.h"
using namespace std;
ClassImp(AlidNdPtEventCuts)
AlidNdPtEventCuts::AlidNdPtEventCuts(const Char_t* name,const Char_t *title) :
AliAnalysisCuts(name, title)
, fTriggerRequired(kTRUE)
, fRecVertexRequired(kTRUE)
, fEventProcessType(AliPWG0Helper::kInvalidProcess)
, fMinNContributors(0)
, fMaxNContributors(0)
, fMaxR(0)
, fMinZv(0)
, fMaxZv(0)
, fMeanXv(0)
, fMeanYv(0)
, fMeanZv(0)
, fSigmaMeanXv(0)
, fSigmaMeanYv(0)
, fSigmaMeanZv(0)
, fRedoTPCVertex(kTRUE)
, fUseBeamSpotConstraint(kTRUE)
, fEventSelectedRequired(kFALSE)
{
Init();
}
AlidNdPtEventCuts::~AlidNdPtEventCuts()
{
}
void AlidNdPtEventCuts::Init()
{
SetTriggerRequired();
SetRecVertexRequired();
SetEventProcessType();
SetNContributorsRange();
SetMaxR();
SetZvRange();
SetMeanXYZv();
SetSigmaMeanXYZv();
SetRedoTPCVertex();
SetUseBeamSpotConstraint();
}
Bool_t AlidNdPtEventCuts::AcceptEvent(AliESDEvent *esdEvent,AliMCEvent *mcEvent, const AliESDVertex *vtx)
{
Bool_t retValue=kTRUE;
if(!esdEvent) return kFALSE;
if(!IsRecVertexRequired()) return kTRUE;
if(!vtx) return kFALSE;
if(!vtx->GetStatus()) return kFALSE;
if(mcEvent) {
AliHeader* header = mcEvent->Header();
if(!header) return kFALSE;
if(fEventProcessType == AliPWG0Helper::kInvalidProcess) {
retValue=kTRUE;
}
else if(fEventProcessType == AliPWG0Helper::kSD || fEventProcessType == AliPWG0Helper::kDD) {
AliPWG0Helper::MCProcessType processType = AliPWG0Helper::GetEventProcessType(header);
if(processType == AliPWG0Helper::kND) retValue=kFALSE;
else retValue=kTRUE;
}
else if(fEventProcessType == AliPWG0Helper::GetEventProcessType(header)) {
retValue=kTRUE;
}
else
retValue=kFALSE;
}
if(vtx->GetZ() < fMinZv) return kFALSE;
if(vtx->GetZ() > fMaxZv) return kFALSE;
return retValue;
}
Bool_t AlidNdPtEventCuts::AcceptMCEvent(AliMCEvent *mcEvent)
{
if(!mcEvent) return kFALSE;
Bool_t retValue=kTRUE;
AliHeader* header = mcEvent->Header();
if(!header) return kFALSE;
AliGenEventHeader* genHeader = header->GenEventHeader();
if (!genHeader) {
AliDebug(AliLog::kError, "Could not retrieve genHeader from Header");
return kFALSE;
}
TArrayF vtxMC(3);
genHeader->PrimaryVertex(vtxMC);
if(fEventProcessType == AliPWG0Helper::kInvalidProcess) {
retValue=kTRUE;
} else {
if(fEventProcessType == AliPWG0Helper::GetEventProcessType(header)) retValue=kTRUE;
else retValue=kFALSE;
}
if(vtxMC[2] < fMinZv) return kFALSE;
if(vtxMC[2] > fMaxZv) return kFALSE;
return retValue;
}
Long64_t AlidNdPtEventCuts::Merge(TCollection* list)
{
if (!list)
return 0;
if (list->IsEmpty())
return 1;
TIterator* iter = list->MakeIterator();
TObject* obj = 0;
Int_t count=0;
while((obj = iter->Next()) != 0)
{
AlidNdPtEventCuts* entry = dynamic_cast<AlidNdPtEventCuts*>(obj);
if (entry == 0)
continue;
count++;
}
return count;
}
AlidNdPtEventCuts.cxx:100 AlidNdPtEventCuts.cxx:101 AlidNdPtEventCuts.cxx:102 AlidNdPtEventCuts.cxx:103 AlidNdPtEventCuts.cxx:104 AlidNdPtEventCuts.cxx:105 AlidNdPtEventCuts.cxx:106 AlidNdPtEventCuts.cxx:107 AlidNdPtEventCuts.cxx:108 AlidNdPtEventCuts.cxx:109 AlidNdPtEventCuts.cxx:110 AlidNdPtEventCuts.cxx:111 AlidNdPtEventCuts.cxx:112 AlidNdPtEventCuts.cxx:113 AlidNdPtEventCuts.cxx:114 AlidNdPtEventCuts.cxx:115 AlidNdPtEventCuts.cxx:116 AlidNdPtEventCuts.cxx:117 AlidNdPtEventCuts.cxx:118 AlidNdPtEventCuts.cxx:119 AlidNdPtEventCuts.cxx:120 AlidNdPtEventCuts.cxx:121 AlidNdPtEventCuts.cxx:122 AlidNdPtEventCuts.cxx:123 AlidNdPtEventCuts.cxx:124 AlidNdPtEventCuts.cxx:125 AlidNdPtEventCuts.cxx:126 AlidNdPtEventCuts.cxx:127 AlidNdPtEventCuts.cxx:128 AlidNdPtEventCuts.cxx:129 AlidNdPtEventCuts.cxx:130 AlidNdPtEventCuts.cxx:131 AlidNdPtEventCuts.cxx:132 AlidNdPtEventCuts.cxx:133 AlidNdPtEventCuts.cxx:134 AlidNdPtEventCuts.cxx:135 AlidNdPtEventCuts.cxx:136 AlidNdPtEventCuts.cxx:137 AlidNdPtEventCuts.cxx:138 AlidNdPtEventCuts.cxx:139 AlidNdPtEventCuts.cxx:140 AlidNdPtEventCuts.cxx:141 AlidNdPtEventCuts.cxx:142 AlidNdPtEventCuts.cxx:143 AlidNdPtEventCuts.cxx:144 AlidNdPtEventCuts.cxx:145 AlidNdPtEventCuts.cxx:146 AlidNdPtEventCuts.cxx:147 AlidNdPtEventCuts.cxx:148 AlidNdPtEventCuts.cxx:149 AlidNdPtEventCuts.cxx:150 AlidNdPtEventCuts.cxx:151 AlidNdPtEventCuts.cxx:152 AlidNdPtEventCuts.cxx:153 AlidNdPtEventCuts.cxx:154 AlidNdPtEventCuts.cxx:155 AlidNdPtEventCuts.cxx:156 AlidNdPtEventCuts.cxx:157 AlidNdPtEventCuts.cxx:158 AlidNdPtEventCuts.cxx:159 AlidNdPtEventCuts.cxx:160 AlidNdPtEventCuts.cxx:161 AlidNdPtEventCuts.cxx:162 AlidNdPtEventCuts.cxx:163 AlidNdPtEventCuts.cxx:164 AlidNdPtEventCuts.cxx:165 AlidNdPtEventCuts.cxx:166 AlidNdPtEventCuts.cxx:167 AlidNdPtEventCuts.cxx:168 AlidNdPtEventCuts.cxx:169 AlidNdPtEventCuts.cxx:170 AlidNdPtEventCuts.cxx:171 AlidNdPtEventCuts.cxx:172 AlidNdPtEventCuts.cxx:173 AlidNdPtEventCuts.cxx:174 AlidNdPtEventCuts.cxx:175 AlidNdPtEventCuts.cxx:176 AlidNdPtEventCuts.cxx:177 AlidNdPtEventCuts.cxx:178 AlidNdPtEventCuts.cxx:179 AlidNdPtEventCuts.cxx:180 AlidNdPtEventCuts.cxx:181 AlidNdPtEventCuts.cxx:182