#include "TBits.h"
#include "TList.h"
#include "AliLog.h"
#include "AliMCEvent.h"
#include <AliGenEventHeader.h>
#include <AliGenPythiaEventHeader.h>
#include <AliGenCocktailEventHeader.h>
#include "AliCFEventGenCuts.h"
ClassImp(AliCFEventGenCuts)
AliCFEventGenCuts::AliCFEventGenCuts() :
AliCFCutBase(),
fMBProcType(-1),
fNTracksMin(-1),
fNTracksMax(100000),
fRequireVtxCuts(kFALSE),
fVtxXMax(1.e99),
fVtxYMax(1.e99),
fVtxZMax(1.e99),
fVtxXMin(-1.e99),
fVtxYMin(-1.e99),
fVtxZMin(-1.e99),
fBitMap(0x0)
{
fBitMap=new TBits(0);
}
AliCFEventGenCuts::AliCFEventGenCuts(Char_t* name, Char_t* title) :
AliCFCutBase(name,title),
fMBProcType(-1),
fNTracksMin(-1),
fNTracksMax(100000),
fRequireVtxCuts(kFALSE),
fVtxXMax(1.e99),
fVtxYMax(1.e99),
fVtxZMax(1.e99),
fVtxXMin(-1.e99),
fVtxYMin(-1.e99),
fVtxZMin(-1.e99),
fBitMap(0x0)
{
fBitMap=new TBits(0);
}
AliCFEventGenCuts::AliCFEventGenCuts(const AliCFEventGenCuts& c) :
AliCFCutBase(c),
fMBProcType(c.fMBProcType),
fNTracksMin(c.fNTracksMin),
fNTracksMax(c.fNTracksMax),
fRequireVtxCuts(c.fRequireVtxCuts),
fVtxXMax(c.fVtxXMax),
fVtxYMax(c.fVtxYMax),
fVtxZMax(c.fVtxZMax),
fVtxXMin(c.fVtxXMin),
fVtxYMin(c.fVtxYMin),
fVtxZMin(c.fVtxZMin),
fBitMap(c.fBitMap)
{
}
AliCFEventGenCuts::~AliCFEventGenCuts() {
if(fBitMap)delete fBitMap;
}
AliCFEventGenCuts& AliCFEventGenCuts::operator=(const AliCFEventGenCuts& c)
{
if (this != &c) {
AliCFCutBase::operator=(c) ;
fMBProcType=c.fMBProcType;
fNTracksMin=c.fNTracksMin;
fNTracksMax=c.fNTracksMax;
fRequireVtxCuts=c.fRequireVtxCuts;
fVtxXMax=c.fVtxXMax;
fVtxYMax=c.fVtxYMax;
fVtxZMax=c.fVtxZMax;
fVtxXMin=c.fVtxXMin;
fVtxYMin=c.fVtxYMin;
fVtxZMin=c.fVtxZMin;
fBitMap=c.fBitMap;
}
return *this ;
}
Bool_t AliCFEventGenCuts::IsSelected(TObject* obj) {
SelectionBitMap(obj);
Bool_t isSelected = kTRUE;
for (UInt_t icut=0; icut<fBitMap->GetNbits();icut++)
if(!fBitMap->TestBitNumber(icut)) isSelected = kFALSE;
return isSelected;
}
void AliCFEventGenCuts::SelectionBitMap(TObject* obj){
for(Int_t j=0;j<kNCuts;j++)fBitMap->SetBitNumber(j,kFALSE);
AliMCEvent* ev = dynamic_cast<AliMCEvent *>(obj);
if ( !ev ) return;
AliGenEventHeader*genHeader = ev->GenEventHeader();
fBitMap->SetBitNumber(0,kTRUE);
if(fMBProcType>-1){
Int_t process=ProcType(genHeader);
if(process==-1){
AliInfo(Form(" not a pythia event, not checking on the process type"));
}else{
switch (fMBProcType) {
case kND:
{
if (!( process!=92 && process!=93 && process!=94))
fBitMap->SetBitNumber(0,kFALSE);
break;
}
case kSD:
{
if (!( process==92 || process==93))
fBitMap->SetBitNumber(0,kFALSE);
break;
}
case kDD:
{
if (!( process==94))
fBitMap->SetBitNumber(0,kFALSE);
break;
}
}
}
}
Int_t nTracks = ev->GetNumberOfTracks();
fBitMap->SetBitNumber(1,kTRUE);
if(nTracks<fNTracksMin || nTracks>fNTracksMax)
fBitMap->SetBitNumber(1,kFALSE);
for(Int_t j=2;j<kNCuts;j++)fBitMap->SetBitNumber(j,kTRUE);
TArrayF vtxPos(3);
genHeader->PrimaryVertex(vtxPos);
if(fRequireVtxCuts){
if (vtxPos[0]>fVtxXMax || vtxPos[0]<fVtxXMin)
fBitMap->SetBitNumber(2,kFALSE);
if (vtxPos[1]>fVtxYMax || vtxPos[1]<fVtxYMin)
fBitMap->SetBitNumber(3,kFALSE);
if (vtxPos[2]>fVtxZMax || vtxPos[2]<fVtxZMin)
fBitMap->SetBitNumber(4,kFALSE);
}
return;
}
Bool_t AliCFEventGenCuts::IsMBProcType(AliMCEvent *ev, PrType iproc){
if ( !ev ) return kFALSE ;
AliGenEventHeader*genHeader = ev->GenEventHeader();
Int_t process=ProcType(genHeader);
switch (iproc) {
case kND:
{
if ( process!=92 && process!=93 && process!=94)
return kTRUE;
}
break;
case kSD:
{
if ( process==92 || process==93)
return kTRUE;
}
break;
case kDD:
{
if ( process==94)
return kTRUE;
}
break;
default: return kFALSE; break;
}
return kFALSE;
}
Int_t AliCFEventGenCuts::ProcType(AliGenEventHeader *genHeader) {
AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
if (!pythiaGenHeader) {
AliGenCocktailEventHeader* genCocktailHeader = dynamic_cast<AliGenCocktailEventHeader*>(genHeader);
if (!genCocktailHeader) {
return -1;
}
TList* headerList = genCocktailHeader->GetHeaders();
if (!headerList) {
return -1;
}
for (Int_t i=0; i<headerList->GetEntries(); i++) {
pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(headerList->At(i));
if (pythiaGenHeader)
break;
}
if (!pythiaGenHeader) {
return -1;
}
}
Int_t process=pythiaGenHeader->ProcessType();
return process;
}
AliCFEventGenCuts.cxx:100 AliCFEventGenCuts.cxx:101 AliCFEventGenCuts.cxx:102 AliCFEventGenCuts.cxx:103 AliCFEventGenCuts.cxx:104 AliCFEventGenCuts.cxx:105 AliCFEventGenCuts.cxx:106 AliCFEventGenCuts.cxx:107 AliCFEventGenCuts.cxx:108 AliCFEventGenCuts.cxx:109 AliCFEventGenCuts.cxx:110 AliCFEventGenCuts.cxx:111 AliCFEventGenCuts.cxx:112 AliCFEventGenCuts.cxx:113 AliCFEventGenCuts.cxx:114 AliCFEventGenCuts.cxx:115 AliCFEventGenCuts.cxx:116 AliCFEventGenCuts.cxx:117 AliCFEventGenCuts.cxx:118 AliCFEventGenCuts.cxx:119 AliCFEventGenCuts.cxx:120 AliCFEventGenCuts.cxx:121 AliCFEventGenCuts.cxx:122 AliCFEventGenCuts.cxx:123 AliCFEventGenCuts.cxx:124 AliCFEventGenCuts.cxx:125 AliCFEventGenCuts.cxx:126 AliCFEventGenCuts.cxx:127 AliCFEventGenCuts.cxx:128 AliCFEventGenCuts.cxx:129 AliCFEventGenCuts.cxx:130 AliCFEventGenCuts.cxx:131 AliCFEventGenCuts.cxx:132 AliCFEventGenCuts.cxx:133 AliCFEventGenCuts.cxx:134 AliCFEventGenCuts.cxx:135 AliCFEventGenCuts.cxx:136 AliCFEventGenCuts.cxx:137 AliCFEventGenCuts.cxx:138 AliCFEventGenCuts.cxx:139 AliCFEventGenCuts.cxx:140 AliCFEventGenCuts.cxx:141 AliCFEventGenCuts.cxx:142 AliCFEventGenCuts.cxx:143 AliCFEventGenCuts.cxx:144 AliCFEventGenCuts.cxx:145 AliCFEventGenCuts.cxx:146 AliCFEventGenCuts.cxx:147 AliCFEventGenCuts.cxx:148 AliCFEventGenCuts.cxx:149 AliCFEventGenCuts.cxx:150 AliCFEventGenCuts.cxx:151 AliCFEventGenCuts.cxx:152 AliCFEventGenCuts.cxx:153 AliCFEventGenCuts.cxx:154 AliCFEventGenCuts.cxx:155 AliCFEventGenCuts.cxx:156 AliCFEventGenCuts.cxx:157 AliCFEventGenCuts.cxx:158 AliCFEventGenCuts.cxx:159 AliCFEventGenCuts.cxx:160 AliCFEventGenCuts.cxx:161 AliCFEventGenCuts.cxx:162 AliCFEventGenCuts.cxx:163 AliCFEventGenCuts.cxx:164 AliCFEventGenCuts.cxx:165 AliCFEventGenCuts.cxx:166 AliCFEventGenCuts.cxx:167 AliCFEventGenCuts.cxx:168 AliCFEventGenCuts.cxx:169 AliCFEventGenCuts.cxx:170 AliCFEventGenCuts.cxx:171 AliCFEventGenCuts.cxx:172 AliCFEventGenCuts.cxx:173 AliCFEventGenCuts.cxx:174 AliCFEventGenCuts.cxx:175 AliCFEventGenCuts.cxx:176 AliCFEventGenCuts.cxx:177 AliCFEventGenCuts.cxx:178 AliCFEventGenCuts.cxx:179 AliCFEventGenCuts.cxx:180 AliCFEventGenCuts.cxx:181 AliCFEventGenCuts.cxx:182 AliCFEventGenCuts.cxx:183 AliCFEventGenCuts.cxx:184 AliCFEventGenCuts.cxx:185 AliCFEventGenCuts.cxx:186 AliCFEventGenCuts.cxx:187 AliCFEventGenCuts.cxx:188 AliCFEventGenCuts.cxx:189 AliCFEventGenCuts.cxx:190 AliCFEventGenCuts.cxx:191 AliCFEventGenCuts.cxx:192 AliCFEventGenCuts.cxx:193 AliCFEventGenCuts.cxx:194 AliCFEventGenCuts.cxx:195 AliCFEventGenCuts.cxx:196 AliCFEventGenCuts.cxx:197 AliCFEventGenCuts.cxx:198 AliCFEventGenCuts.cxx:199 AliCFEventGenCuts.cxx:200 AliCFEventGenCuts.cxx:201 AliCFEventGenCuts.cxx:202 AliCFEventGenCuts.cxx:203 AliCFEventGenCuts.cxx:204 AliCFEventGenCuts.cxx:205 AliCFEventGenCuts.cxx:206 AliCFEventGenCuts.cxx:207 AliCFEventGenCuts.cxx:208 AliCFEventGenCuts.cxx:209 AliCFEventGenCuts.cxx:210 AliCFEventGenCuts.cxx:211 AliCFEventGenCuts.cxx:212 AliCFEventGenCuts.cxx:213 AliCFEventGenCuts.cxx:214 AliCFEventGenCuts.cxx:215 AliCFEventGenCuts.cxx:216 AliCFEventGenCuts.cxx:217 AliCFEventGenCuts.cxx:218 AliCFEventGenCuts.cxx:219 AliCFEventGenCuts.cxx:220 AliCFEventGenCuts.cxx:221 AliCFEventGenCuts.cxx:222 AliCFEventGenCuts.cxx:223 AliCFEventGenCuts.cxx:224 AliCFEventGenCuts.cxx:225 AliCFEventGenCuts.cxx:226 AliCFEventGenCuts.cxx:227 AliCFEventGenCuts.cxx:228 AliCFEventGenCuts.cxx:229 AliCFEventGenCuts.cxx:230 AliCFEventGenCuts.cxx:231 AliCFEventGenCuts.cxx:232 AliCFEventGenCuts.cxx:233 AliCFEventGenCuts.cxx:234 AliCFEventGenCuts.cxx:235 AliCFEventGenCuts.cxx:236 AliCFEventGenCuts.cxx:237 AliCFEventGenCuts.cxx:238 AliCFEventGenCuts.cxx:239 AliCFEventGenCuts.cxx:240 AliCFEventGenCuts.cxx:241 AliCFEventGenCuts.cxx:242 AliCFEventGenCuts.cxx:243 AliCFEventGenCuts.cxx:244 AliCFEventGenCuts.cxx:245 AliCFEventGenCuts.cxx:246 AliCFEventGenCuts.cxx:247 AliCFEventGenCuts.cxx:248 AliCFEventGenCuts.cxx:249 AliCFEventGenCuts.cxx:250 AliCFEventGenCuts.cxx:251 AliCFEventGenCuts.cxx:252 AliCFEventGenCuts.cxx:253 AliCFEventGenCuts.cxx:254 AliCFEventGenCuts.cxx:255 AliCFEventGenCuts.cxx:256 AliCFEventGenCuts.cxx:257 AliCFEventGenCuts.cxx:258 AliCFEventGenCuts.cxx:259 AliCFEventGenCuts.cxx:260 AliCFEventGenCuts.cxx:261 AliCFEventGenCuts.cxx:262 AliCFEventGenCuts.cxx:263 AliCFEventGenCuts.cxx:264 AliCFEventGenCuts.cxx:265 AliCFEventGenCuts.cxx:266 AliCFEventGenCuts.cxx:267 AliCFEventGenCuts.cxx:268 AliCFEventGenCuts.cxx:269 AliCFEventGenCuts.cxx:270 AliCFEventGenCuts.cxx:271 AliCFEventGenCuts.cxx:272 AliCFEventGenCuts.cxx:273 AliCFEventGenCuts.cxx:274 AliCFEventGenCuts.cxx:275 AliCFEventGenCuts.cxx:276 AliCFEventGenCuts.cxx:277 AliCFEventGenCuts.cxx:278 AliCFEventGenCuts.cxx:279 AliCFEventGenCuts.cxx:280 AliCFEventGenCuts.cxx:281 AliCFEventGenCuts.cxx:282