25 #include "AliAODTrack.h" 26 #include "AliESDtrack.h" 27 #include "AliAnalysisManager.h" 28 #include "AliInputEventHandler.h" 29 #include "AliMCEventHandler.h" 30 #include "AliAODHandler.h" 34 #include "TObjString.h" 35 #include "AliMCEvent.h" 36 #include "AliAODEvent.h" 37 #include "AliESDEvent.h" 38 #include "AliCentrality.h" 39 #include "AliMultSelection.h" 43 #include "AliGenCocktailEventHeader.h" 44 #include "AliGenDPMjetEventHeader.h" 45 #include "AliGenPythiaEventHeader.h" 46 #include "AliGenHijingEventHeader.h" 47 #include "AliTriggerAnalysis.h" 49 #include "AliVCaloCells.h" 50 #include "AliAODMCParticle.h" 51 #include "AliAODMCHeader.h" 52 #include "AliEMCALTriggerPatchInfo.h" 67 "SelectSpecialTrigger",
68 "SelectSpecialSubTriggerClass",
77 AliAnalysisCuts(name,title),
80 fDoLightOutput(kFALSE),
83 fDetectorCentrality(0),
84 fModCentralityClass(0),
85 fEnableVertexCut(kTRUE),
89 fMultiplicityMethod(0),
91 fSpecialSubTrigger(0),
92 fRemovePileUp(kFALSE),
93 fRemovePileUpSPD(kFALSE),
94 fPastFutureRejectionLow(0),
95 fPastFutureRejectionHigh(0),
96 fDoPileUpRejectV0MTPCout(0),
97 fFPileUpRejectV0MTPCout(0),
98 fRejectExtraSignals(0),
99 fOfflineTriggerMask(0),
104 fNotRejectedStart(NULL),
105 fNotRejectedEnd(NULL),
106 fGeneratorNames(NULL),
107 fPeriodEnum(kNoPeriod),
114 fDoCentralityFlat(0),
115 fPathWeightsFlatCent(
""),
116 fNameHistoNotFlatCentrality(
""),
117 fDoReweightHistoMCPi0(kFALSE),
118 fDoReweightHistoMCEta(kFALSE),
119 fDoReweightHistoMCK0s(kFALSE),
120 fPathTrFReweighting(
""),
121 fNameHistoReweightingPi0(
""),
122 fNameHistoReweightingEta(
""),
123 fNameHistoReweightingK0s(
""),
127 fHistoEventCuts(NULL),
128 fHistoPastFutureBits(NULL),
130 hCentralityNotFlat(NULL),
133 hNPileupVertices(NULL),
134 hPileupVertexToPrimZ(NULL),
135 hPileupVertexToPrimZSPDPileup(NULL),
136 hPileupVertexToPrimZTrackletvsHits(NULL),
137 hEventPlaneAngle(NULL),
140 hTriggerClassSelected(NULL),
141 hTriggerClassesCorrelated(NULL),
142 hReweightMCHistPi0(NULL),
143 hReweightMCHistEta(NULL),
144 hReweightMCHistK0s(NULL),
148 fAddedSignalPDGCode(0),
150 fTriggerSelectedManually(kFALSE),
151 fSpecialTriggerName(
""),
152 fSpecialSubTriggerName(
""),
153 fNSpecialSubTriggerOptions(0),
154 hSPDClusterTrackletBackgroundBefore(NULL),
155 hSPDClusterTrackletBackground(NULL),
157 fCorrTaskSetting(
""),
159 fTriggerPatchInfo(NULL),
160 fMainTriggerPatchEMCAL(NULL),
161 fCaloTriggersName(
""),
162 fCaloTriggerPatchInfoName(
""),
164 fTriggersEMCALSelected(-1),
165 fEMCALTrigInitialized(kFALSE),
166 fSecProdBoundary(1.0),
169 fMaxFacPtHardSingleParticle(1.5),
170 fMimicTrigger(kFALSE),
171 fRejectTriggerOverlap(kFALSE),
172 fDoMultiplicityWeighting(kFALSE),
173 fPathReweightingMult(
""),
174 fNameHistoReweightingMultData(
""),
175 fNameHistoReweightingMultMC(
""),
176 hReweightMultData(NULL),
177 hReweightMultMC(NULL),
183 fUtils =
new AliAnalysisUtils();
192 AliAnalysisCuts(ref),
298 fUtils =
new AliAnalysisUtils();
338 TH1::AddDirectory(kFALSE);
437 hTriggerClass->GetXaxis()->SetBinLabel( 9,
"kMUL7/kMuonLikePB");
438 hTriggerClass->GetXaxis()->SetBinLabel(10,
"kMUU7/kMuonUnlikePB");
442 hTriggerClass->GetXaxis()->SetBinLabel(14,
"kPHI7/kPHI8/kPHOSPb");
451 hTriggerClass->GetXaxis()->SetBinLabel(23,
"kMuonSingleLowPt8");
452 hTriggerClass->GetXaxis()->SetBinLabel(24,
"kMuonSingleHighPt8");
453 hTriggerClass->GetXaxis()->SetBinLabel(25,
"kMuonLikeLowPt8");
454 hTriggerClass->GetXaxis()->SetBinLabel(26,
"kMuonUnlikeLowPt8");
455 hTriggerClass->GetXaxis()->SetBinLabel(27,
"kMuonUnlikeLowPt0");
463 hTriggerClass->GetXaxis()->SetBinLabel(35,
"failed Physics Selection");
464 hTriggerClass->GetXaxis()->SetBinLabel(36,
"mimickedTrigger");
522 TH1::AddDirectory(kTRUE);
535 if(mcEvent && event->IsA()==AliESDEvent::Class()){
537 AliMCEventHandler* mcHandler =
dynamic_cast<AliMCEventHandler*
> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
542 if (!mcHandler->InitOk() ){
546 if (!mcHandler->TreeK() ){
570 if(event->IsA()==AliESDEvent::Class()){
571 AliTriggerAnalysis fTriggerAnalysis;
572 fHasV0AND = fTriggerAnalysis.IsOfflineTriggerFired((
AliESDEvent*)event, AliTriggerAnalysis::kV0AND);
599 Int_t nClustersLayer0 =
event->GetNumberOfITSClusters(0);
600 Int_t nClustersLayer1 =
event->GetNumberOfITSClusters(1);
601 Int_t nTracklets =
event->GetMultiplicity()->GetNumberOfTracklets();
606 if(event->IsA()==AliESDEvent::Class()){
610 for(
Int_t i=0; i<nPileVert;i++){
611 const AliESDVertex* pv = ((
AliESDEvent*)event)->GetPileupVertexSPD(i);
612 Int_t nc2 = pv->GetNContributors();
617 if (TMath::Abs(distZMax) < TMath::Abs(distZ) ){
629 if(
fUtils->IsPileUpMV(event)){
635 if(
fUtils->IsFirstEventInChunk(event)){
641 if(
fUtils->IsPileUpEvent(event)){
647 if (
fUtils->IsSPDClusterVsTrackletBG(event)){
656 if(event->IsPileupFromSPD(3,0.8,3.,2.,5.) ){
662 if (
fUtils->IsSPDClusterVsTrackletBG(event)){
695 AliEventplane *EventPlane =
event->GetEventplane();
720 AliInfo(
"Entering loading of weights for centrality flattening");
743 AliInfo(
"Entering loading of weights for multiplicity weighting");
777 AliInfo(
"Entering loading of histograms for weighting");
843 AliInfo(
"Centrality flattening was enabled");
848 AliInfo(
"Multiplicity weighting was enabled");
852 AliInfo(
"Particle Weighting was enabled");
857 AliInfo(Form(
"Set Event Cut Number: %s",analysisCutSelection.Data()));
858 if(analysisCutSelection.Length()!=
kNCuts) {
859 AliError(Form(
"Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(),
kNCuts));
862 if(!analysisCutSelection.IsAlnum()){
863 AliError(
"Cut selection is not alphanumeric");
870 TString analysisCutSelectionLowerCase = Form(
"%s",analysisCutSelection.Data());
871 analysisCutSelectionLowerCase.ToLower();
872 const char *cutSelection = analysisCutSelectionLowerCase.Data();
873 #define ASSIGNARRAY(i) fCuts[i] = ((int)cutSelection[i]>=(int)'a') ? cutSelection[i]-'a'+10 : cutSelection[i]-'0' 906 }
else return kFALSE;
912 }
else return kFALSE;
918 }
else return kFALSE;
924 }
else return kFALSE;
930 }
else return kFALSE;
936 }
else return kFALSE;
942 }
else return kFALSE;
948 }
else return kFALSE;
951 AliError(
"Cut id out of range");
955 AliError(
"Cut id %d not recognized");
969 printf(
"\nEvent cutnumber \n");
971 printf(
"%d",
fCuts[ic]);
975 printf(
"Running in pp mode \n");
978 printf(
"\t only events triggered by V0OR will be analysed \n");
980 printf(
"\t only events where SDD was present will be analysed \n");
984 printf(
"\t only events triggered by V0AND will be analysed \n");
986 printf(
"\t only events where SDD was present will be analysed and triggered by VOAND\n");
997 printf(
"Running in PbPb mode \n");
999 printf(
"\t centrality selection based on V0M \n");
1001 printf(
"\t centrality selection based on Cl1 \n");
1019 printf(
"\t only events triggered by kMB, kCentral, kSemiCentral will be analysed \n");
1027 printf(
"Running in pPb mode \n");
1029 printf(
"\t centrality selection based on V0A \n");
1031 printf(
"\t centrality selection based on Cl1 \n");
1041 printf(
"\t only events triggered by kINT7 will be analysed \n");
1048 else printf(
"\t No vertex cut \n");
1051 printf(
"\t Doing pile up removal \n");
1053 printf(
"\t Doing pile up removal using SPD \n");
1056 printf(
"\t Doing extra pile up removal V0M vs TPCout \n");
1059 printf(
"\t Doing extra past-future pile up removal\n");
1063 printf(
"MC event cuts: \n");
1066 else if (
fRejectExtraSignals == 4) printf(
"\t special handling for Jets embedded in MB events \n");
1068 printf(
"\t maximum factor between jet and pt hard = %2.2f \n",
fMaxFacPtHard);
1161 AliError(Form(
"SetHeavyIon not defined %d",isHeavyIon));
1171 if(minCentrality<0||minCentrality>20){
1172 AliError(Form(
"minCentrality not defined %d",minCentrality));
1184 if(maxCentrality<0||maxCentrality>20){
1185 AliError(Form(
"maxCentrality not defined %d",maxCentrality));
1196 switch(selectSpecialTrigger){
1226 fOfflineTriggerMask=AliVEvent::kPHI7 | AliVEvent::kPHI1 | AliVEvent::kPHI8 | AliVEvent::kPHOSPb;
1253 AliError(
"Warning: Special Trigger Not known");
1264 switch(selectSpecialSubTriggerClass){
1275 AliError(
"Warning: Special Subtrigger Class Not known");
1279 switch(selectSpecialSubTriggerClass){
1304 AliError(
"Warning: Special Subtrigger Class Not known");
1308 switch(selectSpecialSubTriggerClass){
1404 AliError(
"Warning: Special Subtrigger Class Not known");
1408 switch(selectSpecialSubTriggerClass){
1455 AliError(
"Warning: Special Subtrigger Class Not known");
1459 switch(selectSpecialSubTriggerClass){
1508 AliError(
"Warning: Special Subtrigger Class Not known");
1512 switch(selectSpecialSubTriggerClass){
1540 AliError(
"Warning: Special Subtrigger Class Not known");
1544 switch(selectSpecialSubTriggerClass){
1588 AliError(
"Warning: Special Subtrigger Class Not known");
1592 switch(selectSpecialSubTriggerClass){
1684 AliError(
"Warning: Special Subtrigger Class Not known");
1688 switch(selectSpecialSubTriggerClass){
1766 AliError(
"Warning: Special Subtrigger Class Not known");
1790 switch(removePileUp){
1935 fUtils->SetASPDCvsTCut(200.);
1936 fUtils->SetBSPDCvsTCut(7.);
1951 AliError(
"RemovePileUpCut not defined");
1960 switch(extraSignal){
1977 AliError(Form(
"Extra Signal Rejection not defined %d",extraSignal));
2012 AliError(Form(
"Vertex Cut not defined %d",vertexCut));
2059 AliMultSelection *MultSelection = (AliMultSelection*)event->FindListObject(
"MultSelection");
2061 AliWarning (
"AliMultSelection object not found !");
2065 if(
fIsHeavyIon==2)
return MultSelection->GetMultiplicityPercentile(
"V0A");
2066 else return MultSelection->GetMultiplicityPercentile(
"V0M");
2067 }
else if(
fDetectorCentrality==1)
return MultSelection->GetMultiplicityPercentile(
"CL1",kTRUE);
2070 AliCentrality *fESDCentrality = (AliCentrality*)esdEvent->GetCentrality();
2072 if(
fIsHeavyIon==2)
return fESDCentrality->GetCentralityPercentile(
"V0A");
2073 else return fESDCentrality->GetCentralityPercentile(
"V0M");
2081 AliMultSelection *MultSelection = (AliMultSelection*)aodEvent->FindListObject(
"MultSelection");
2083 AliWarning (
"AliMultSelection object not found !");
2087 if(
fIsHeavyIon==2)
return MultSelection->GetMultiplicityPercentile(
"V0A");
2088 else return MultSelection->GetMultiplicityPercentile(
"V0M",kTRUE);
2089 }
else if(
fDetectorCentrality==1)
return MultSelection->GetMultiplicityPercentile(
"CL1",kTRUE);
2092 if(aodEvent->GetHeader()){
return ((AliVAODHeader*)aodEvent->GetHeader())->
GetCentrality();}
2107 Int_t primaryTracksPP[9] = { 0, 2, 5, 10, 15,
2122 if(centrality<0 && !mcEvent)
return kFALSE;
2124 Int_t centralityC=0;
2126 centralityC=
Int_t(centrality/10);
2132 centralityC=
Int_t(centrality);
2135 }
else return kFALSE;
2138 centralityC=
Int_t(centrality);
2141 }
else return kFALSE;
2144 Int_t PrimaryTracks10[11][2] =
2158 Int_t PrimaryTracksLHC11h10[11][2] =
2172 Int_t PrimaryTracksLHC15o10[11][2] =
2186 Int_t PrimaryTracksLHC10h5[21][2] =
2210 Int_t PrimaryTracksLHC11h5[21][2] =
2234 Int_t PrimaryTracksLHC15o5[21][2] =
2258 Int_t PrimaryTracksLHC17n10[11][2] =
2274 if(event->IsA()==AliESDEvent::Class()) column = 0;
2275 if(event->IsA()==AliAODEvent::Class()) column = 1;
2291 centralityC=
Int_t(centrality/10);
2293 if(
fCentralityMin==0 && nprimaryTracks >= PrimaryTracksLHC15o10[0][column])
return kFALSE;
2295 }
else return kFALSE;
2304 centralityC=
Int_t(centrality/10);
2319 centralityC =
Int_t(centrality);
2321 if(
fCentralityMin==0 && nprimaryTracks >= PrimaryTracksLHC15o5[0][column])
return kFALSE;
2323 }
else return kFALSE;
2332 centralityC=
Int_t(centrality);
2335 }
else return kFALSE;
2339 Int_t PrimaryTracksLHC11h10AltMin[11][2] =
2353 Int_t PrimaryTracksLHC11h10AltMax[11][2] =
2367 Int_t PrimaryTracksLHC11h5AltMin[21][2] =
2391 Int_t PrimaryTracksLHC11h5AltMax[21][2] =
2420 if(nprimaryTracks > PrimaryTracksLHC11h10AltMin[
fCentralityMax][column] && nprimaryTracks <= PrimaryTracksLHC11h10AltMax[
fCentralityMin][column])
2428 centralityC=
Int_t(centrality/10);
2438 if(nprimaryTracks > PrimaryTracksLHC11h5AltMin[
fCentralityMax][column] && nprimaryTracks <= PrimaryTracksLHC11h5AltMax[
fCentralityMin][column])
2445 centralityC=
Int_t(centrality);
2448 }
else return kFALSE;
2458 Double_t fVertexZ=
event->GetPrimaryVertex()->GetZ();
2462 fVertexZSPD = fESDEvent->GetPrimaryVertexSPD()->GetZ();
2466 fVertexZSPD = fAODEvent->GetPrimaryVertexSPD()->GetZ();
2469 if(TMath::Abs(fVertexZ)>
fMaxVertexZ)
return kFALSE;
2473 if (TMath::Abs(fVertexZ-fVertexZSPD) > 0.1)
return kFALSE;
2476 if(!
fUtils->IsVertexSelected2013pA(event))
return kFALSE;
2487 TBits fIR1 =
event->GetHeader()->GetIRInt1InteractionMap();
2488 TBits fIR2 =
event->GetHeader()->GetIRInt2InteractionMap();
2489 UShort_t bunchCrossings =
event->GetBunchCrossNumber();
2491 for(
Int_t i = 0; i<180;i++){
2492 if(fIR1.TestBitNumber(i))
2497 Bool_t isOutOfBunchPileup = 0;
2500 if(pf1 < -89) pf1 = -89;
2501 if(pf2 > 89) pf2 = 89;
2502 Int_t pf2maxForT0 = pf2;
2504 for (
Int_t i=pf1;i<=pf2;i++) {
2506 if (i<=pf2maxForT0) isOutOfBunchPileup|=fIR2.TestBitNumber(90+i);
2507 if (i>0 && i<=ir1skip)
continue;
2508 isOutOfBunchPileup|=fIR1.TestBitNumber(90+i);
2510 return isOutOfBunchPileup;
2516 Bool_t isPileUpV0MTPCout=0;
2521 multV0M =
event->GetVZEROData()->GetMTotV0A();
2523 multV0M =
event->GetVZEROData()->GetMTotV0A() +
event->GetVZEROData()->GetMTotV0C() ;
2528 if (multV0M < valFunc ) isPileUpV0MTPCout=1;
2531 return isPileUpV0MTPCout;
2540 if (fESDEvent->GetPrimaryVertex() != NULL){
2541 if(fESDEvent->GetPrimaryVertex()->GetNContributors()>0) {
2543 return fESDEvent->GetPrimaryVertex()->GetNContributors();
2547 if(fESDEvent->GetPrimaryVertexSPD() !=NULL){
2548 if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()>0) {
2550 return fESDEvent->GetPrimaryVertexSPD()->GetNContributors();
2552 AliWarning(Form(
"Number of contributors from bad vertex type:: %s",fESDEvent->GetPrimaryVertex()->GetName()));
2561 if (fAODEvent->GetPrimaryVertex() != NULL){
2562 if(fAODEvent->GetPrimaryVertex()->GetNContributors()>0) {
2563 return fAODEvent->GetPrimaryVertex()->GetNContributors();
2566 if(fAODEvent->GetPrimaryVertexSPD() !=NULL){
2567 if(fAODEvent->GetPrimaryVertexSPD()->GetNContributors()>0) {
2568 return fAODEvent->GetPrimaryVertexSPD()->GetNContributors();
2570 AliWarning(Form(
"Number of contributors from bad vertex type:: %s",fAODEvent->GetPrimaryVertex()->GetName()));
2583 AliGenCocktailEventHeader *cHeader = 0x0;
2584 Bool_t headerFound = kFALSE;
2606 cHeader =
dynamic_cast<AliGenCocktailEventHeader*
>(mcEvent->GenEventHeader());
2607 if(cHeader) headerFound = kTRUE;
2615 TList *genHeaders = 0x0;
2616 if(cHeader) genHeaders = cHeader->GetHeaders();
2617 AliGenEventHeader* gh = 0;
2618 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
2619 gh = (AliGenEventHeader*)genHeaders->At(i);
2620 TString GeneratorName = gh->GetName();
2621 if (GeneratorName.CompareTo(
"AliGenPythiaEventHeader") == 0 || GeneratorName.Contains(
"Pythia8Jets")){
2622 Bool_t eventAccepted = kTRUE;
2623 TParticle * jet = 0;
2624 Int_t nTriggerJets =
dynamic_cast<AliGenPythiaEventHeader*
>(gh)->NTriggerJets();
2627 for(
Int_t ijet = 0; ijet< nTriggerJets; ijet++){
2628 dynamic_cast<AliGenPythiaEventHeader*
>(gh)->TriggerJet(ijet, tmpjet);
2629 jet =
new TParticle(94, 21, -1, -1, -1, -1, tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3], 0,0,0,0);
2632 eventAccepted= kFALSE;
2636 if (jet)
delete jet;
2638 for(Long_t i = 0; i < mcEvent->GetNumberOfPrimaries(); i++) {
2639 TParticle* particle = (TParticle *)mcEvent->Particle(i);
2640 if (!particle)
continue;
2641 if (TMath::Abs(particle->GetPdgCode()) == 111 || TMath::Abs(particle->GetPdgCode()) == 221){
2643 eventAccepted= kFALSE;
2651 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2653 70, 85, 99, 115, 132,
2654 150, 169, 190, 212, 235,
2656 Double_t weightsBins[20] = { 43.7553, 13.5848, 6.788, 2.67826, 0.975255,
2657 0.39069, 0.127342, 0.0465597, 0.0206539, 0.00750243,
2658 0.00319118, 0.00122291, 0.000641232, 0.000321437, 0.000168273,
2659 9.17033e-05, 5.34755e-05, 3.01354e-05, 1.74518e-05, 2.8004e-05};
2661 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2662 if (bin < 20) weight = weightsBins[bin];
2665 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2667 70, 85, 99, 115, 132,
2668 150, 169, 190, 212, 235,
2670 Double_t weightsBins[20] = { 43.8654, 13.6215, 6.79856, 2.67526, 0.978794,
2671 0.390797, 0.127769, 0.0465714, 0.0206173, 0.00750282,
2672 0.00318773, 0.00122533, 0.000644385, 0.000321225, 0.00016846,
2673 9.18305e-05, 5.33507e-05, 3.00677e-05, 1.74608e-05, 2.80823e-05};
2676 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2677 if (bin < 20) weight = weightsBins[bin];
2680 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2682 70, 85, 99, 115, 132,
2683 150, 169, 190, 212, 235,
2685 Double_t weightsBins[20] = { 16.0869, 4.61169, 2.14976, 0.782544, 0.264854,
2686 9.7619E-02, 2.92747E-02, 9.89515E-03, 4.05152E-03, 1.35393E-03,
2687 5.29864E-04, 1.88317E-04, 9.23E-05, 4.29E-05, 2.09E-05,
2688 1.06E-05, 5.76E-06, 3.00E-06, 1.62E-06, 2.10E-06 };
2690 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2691 if (bin < 20) weight = weightsBins[bin];
2695 Double_t ptHardBinRanges[13] = { 5, 7, 9, 12, 16,
2698 Double_t weightsBins[12] = { 7.858393e-03, 4.718691e-03, 4.077575e-03, 2.814527e-03, 1.669625e-03,
2699 1.007535e-03, 4.536554e-04, 2.111041e-04, 1.094840e-04, 4.404973e-05,
2700 1.933238e-05, 1.562895e-05};
2702 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2703 if (bin < 12) weight = weightsBins[bin];
2706 Double_t ptHardBinRanges[20] = { 5, 11, 21, 36, 57,
2707 84, 117, 152, 191, 1000000,
2709 21, 28, 36, 45, 57 };
2710 Double_t weightsBins[19] = { 4.43629 , 0.49523, 0.0394921, 0.00383174, 0.000446559,
2711 6.37374e-05, 1.03134e-05, 2.27012e-06, 7.59281e-07, 0,
2712 2.62906, 1.12884, 0.656873, 0.262822, 0.0876732,
2713 0.0307759, 0.0087083, 0.0027664, 0.00106203};
2717 if (binFromFile != -1 && binFromFile >9 && ptHard < 57) bin = 9;
2718 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2719 if (bin < 19) weight = weightsBins[bin];
2722 Double_t ptHardBinRanges[20] = { 5, 11, 21, 36, 57,
2723 84, 117, 152, 191, 1000000,
2725 21, 28, 36, 45, 57 };
2727 Double_t weightsBins[19] = { 4.43897 , 0.495766, 0.039486, 0.00383011, 0.000447104,
2728 6.37277e-05, 1.03166e-05, 2.26971e-06, 7.59023e-07, 0,
2729 2.63331, 1.12815, 0.657034, 0.262756, 0.0877227,
2730 0.0307638, 0.00870635, 0.00276658, 0.00106229};
2733 if (binFromFile != -1 && binFromFile >9 && ptHard < 57) bin = 9;
2734 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2735 if (bin < 19) weight = weightsBins[bin];
2738 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2740 70, 85, 99, 115, 132,
2741 150, 169, 190, 212, 235,
2743 Double_t weightsBins[20] = { 28.3084, 8.43277, 4.07753, 1.54359, 0.543318,
2744 0.208394, 0.0652349, 0.0186904, 0.00834528, 0.00301414,
2745 0.00125939, 0.000474403, 0.000244052, 0.00011924, 6.09838e-05,
2746 3.24148e-05, 1.84314e-05, 1.00926e-05, 5.68632e-06, 8.38092e-06};
2748 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2749 if (bin < 20) weight = weightsBins[bin];
2752 Double_t ptHardBinRanges[6] = { 7, 9, 12, 16, 21, 1000};
2753 Double_t weightsBins[5] = { 0.00672445, 0.00799158, 0.00678934, 0.00463908, 0.00600068};
2755 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2756 if (bin < 5) weight = weightsBins[bin];
2759 Double_t ptHardBinRanges[7] = { 14, 19, 26, 35, 48, 66, 1000};
2760 Double_t weightsBins[6] = { 0.00608281, 0.00393646, 0.00200138, 0.000986267, 0.000389051, 0.0001863};
2762 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2763 if (bin < 6) weight = weightsBins[bin];
2766 Double_t ptHardBinRanges[8] = { 0, 5, 11, 21, 36, 57, 84, 1000};
2767 Double_t weightsBins[7] = { 0.00151999, 0.000100346, 1.27688e-05, 1.82388e-06, 3.08506e-07, 6.00308e-08, 1.88414e-08};
2769 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2770 if (bin < 7) weight = weightsBins[bin];
2773 Double_t ptHardBinRanges[11] = { 5, 11, 21, 36, 57,
2774 84, 117, 152, 191, 234,
2776 Double_t weightsBins[10] = { 2.24185e-6 , 2.48463e-7, 2.23171e-8, 2.43667e-9, 3.29934e-10,
2777 5.34592e-11, 1.00937e-11, 2.6493e-12, 8.53912e-13, 5.43077e-13};
2779 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2780 if (bin < 10) weight = weightsBins[bin];
2782 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16, 21, 28, 36, 45, 57, 70, 85, 99, 115, 132, 150, 169, 190, 212, 235, 10000};
2783 Double_t weightsBins[20] = {1.565930E+01, 4.598350E+00, 2.081240E+00, 7.744650E-01, 2.644240E-01, 1.002330E-01, 2.979190E-02, 9.696490E-03, 3.950930E-03, 1.333040E-03, 5.210630E-04, 1.927180E-04, 9.235930E-05, 4.346820E-05, 2.120660E-05, 1.073260E-05, 5.701210E-06, 3.047490E-06, 1.664780E-06, 2.123400E-06};
2785 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2786 if (bin < 20) weight = weightsBins[bin];
2788 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16, 21, 28, 36, 45, 57, 70, 85, 99, 115, 132, 150, 169, 190, 212, 235, 10000};
2789 Double_t weightsBins[20] = {2.723740E+01, 8.127540E+00, 3.934400E+00, 1.492720E+00, 5.268010E-01, 2.033790E-01, 6.361520E-02, 2.256080E-02, 9.638840E-03, 3.372890E-03, 1.381980E-03, 5.121390E-04, 2.613120E-04, 1.260940E-04, 6.393150E-05, 3.386080E-05, 1.926040E-05, 1.046950E-05, 5.895950E-06, 8.658420E-06};
2791 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2792 if (bin < 20) weight = weightsBins[bin];
2794 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16, 21, 28, 36, 45, 57, 70, 85, 99, 115, 132, 150, 169, 190, 212, 235, 10000};
2795 Double_t weightsBins[20] = {2.716550E+01, 8.121430E+00, 3.932100E+00, 1.492830E+00, 5.272190E-01, 2.023090E-01, 6.371860E-02, 2.245360E-02, 9.590340E-03, 3.369300E-03, 1.384470E-03, 5.119390E-04, 2.606910E-04, 1.259110E-04, 6.408650E-05, 3.396290E-05, 1.917340E-05, 1.044610E-05, 5.882680E-06, 8.672390E-06};
2797 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2798 if (bin < 20) weight = weightsBins[bin];
2800 Double_t ptHardBinRanges[7] = { 5, 11, 21, 36, 57, 84, 10000};
2801 Double_t weightsBins[6] = { 0.000212409, 3.12964e-05, 5.07523e-06, 9.67792e-07, 2.06531e-07, 8.05828e-08};
2803 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2804 if (bin < 6) weight = weightsBins[bin];
2809 if (weight == -1)
return kFALSE;
2810 else return eventAccepted;
2815 AliGenEventHeader * eventHeader = mcEvent->GenEventHeader();
2816 TString eventHeaderName = eventHeader->ClassName();
2817 Bool_t eventAccepted = kFALSE;
2818 if (eventHeaderName.CompareTo(
"AliGenPythiaEventHeader") == 0 || eventHeaderName.Contains(
"Pythia8Jets")){
2819 eventAccepted = kTRUE;
2821 if(event->IsA()==AliAODEvent::Class()){
2822 AliAODMCHeader *mch = NULL;
2825 mch =
dynamic_cast<AliAODMCHeader*
>(aod->FindListObject(
"mcHeader"));
2827 Int_t nGenerators = mch->GetNCocktailHeaders();
2828 if ( nGenerators > 0 ){
2829 for(
Int_t igen = 0; igen < nGenerators; igen++)
2831 AliGenEventHeader * eventHeaderGen = mch->GetCocktailHeader(igen) ;
2832 TString name = eventHeaderGen->GetName();
2833 if (name.CompareTo(
"AliGenPythiaEventHeader") == 0 || name.Contains(
"Pythia8Jets")){
2834 eventAccepted = kTRUE;
2835 eventHeader = eventHeaderGen;
2844 TParticle * jet = 0;
2845 Int_t nTriggerJets =
dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader)->NTriggerJets();
2846 Float_t ptHard =
dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader)->
GetPtHard();
2848 for(
Int_t ijet = 0; ijet< nTriggerJets; ijet++){
2849 dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader)->TriggerJet(ijet, tmpjet);
2850 jet =
new TParticle(94, 21, -1, -1, -1, -1, tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3], 0,0,0,0);
2853 eventAccepted= kFALSE;
2858 for(Long_t i = 0; i < mcEvent->GetNumberOfPrimaries(); i++) {
2859 TParticle* particle = (TParticle *)mcEvent->Particle(i);
2860 if (!particle)
continue;
2861 if (TMath::Abs(particle->GetPdgCode()) == 111 || TMath::Abs(particle->GetPdgCode()) == 221){
2863 eventAccepted= kFALSE;
2871 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2873 70, 85, 99, 115, 132,
2874 150, 169, 190, 212, 235,
2876 Double_t weightsBins[20] = { 43.7553, 13.5848, 6.788, 2.67826, 0.975255,
2877 0.39069, 0.127342, 0.0465597, 0.0206539, 0.00750243,
2878 0.00319118, 0.00122291, 0.000641232, 0.000321437, 0.000168273,
2879 9.17033e-05, 5.34755e-05, 3.01354e-05, 1.74518e-05, 2.8004e-05};
2881 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2882 if (bin < 20) weight = weightsBins[bin];
2885 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2887 70, 85, 99, 115, 132,
2888 150, 169, 190, 212, 235,
2890 Double_t weightsBins[20] = { 43.8654, 13.6215, 6.79856, 2.67526, 0.978794,
2891 0.390797, 0.127769, 0.0465714, 0.0206173, 0.00750282,
2892 0.00318773, 0.00122533, 0.000644385, 0.000321225, 0.00016846,
2893 9.18305e-05, 5.33507e-05, 3.00677e-05, 1.74608e-05, 2.80823e-05};
2896 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2897 if (bin < 20) weight = weightsBins[bin];
2900 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2902 70, 85, 99, 115, 132,
2903 150, 169, 190, 212, 235,
2905 Double_t weightsBins[20] = { 16.0869, 4.61169, 2.14976, 0.782544, 0.264854,
2906 9.7619E-02, 2.92747E-02, 9.89515E-03, 4.05152E-03, 1.35393E-03,
2907 5.29864E-04, 1.88317E-04, 9.23E-05, 4.29E-05, 2.09E-05,
2908 1.06E-05, 5.76E-06, 3.00E-06, 1.62E-06, 2.10E-06 };
2910 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2911 if (bin < 20) weight = weightsBins[bin];
2915 Double_t ptHardBinRanges[13] = { 5, 7, 9, 12, 16,
2918 Double_t weightsBins[12] = { 7.858393e-03, 4.718691e-03, 4.077575e-03, 2.814527e-03, 1.669625e-03,
2919 1.007535e-03, 4.536554e-04, 2.111041e-04, 1.094840e-04, 4.404973e-05,
2920 1.933238e-05, 1.562895e-05};
2922 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2923 if (bin < 12) weight = weightsBins[bin];
2926 Double_t ptHardBinRanges[20] = { 5, 11, 21, 36, 57,
2927 84, 117, 152, 191, 1000000,
2929 21, 28, 36, 45, 57 };
2930 Double_t weightsBins[19] = { 4.43629 , 0.49523, 0.0394921, 0.00383174, 0.000446559,
2931 6.37374e-05, 1.03134e-05, 2.27012e-06, 7.59281e-07, 0,
2932 2.62906, 1.12884, 0.656873, 0.262822, 0.0876732,
2933 0.0307759, 0.0087083, 0.0027664, 0.00106203};
2937 if (binFromFile != -1 && binFromFile >9 && ptHard < 57) bin = 9;
2938 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2939 if (bin < 19) weight = weightsBins[bin];
2942 Double_t ptHardBinRanges[20] = { 5, 11, 21, 36, 57,
2943 84, 117, 152, 191, 1000000,
2945 21, 28, 36, 45, 57 };
2947 Double_t weightsBins[19] = { 4.43897 , 0.495766, 0.039486, 0.00383011, 0.000447104,
2948 6.37277e-05, 1.03166e-05, 2.26971e-06, 7.59023e-07, 0,
2949 2.63331, 1.12815, 0.657034, 0.262756, 0.0877227,
2950 0.0307638, 0.00870635, 0.00276658, 0.00106229};
2953 if (binFromFile != -1 && binFromFile >9 && ptHard < 57) bin = 9;
2954 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2955 if (bin < 19) weight = weightsBins[bin];
2958 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2960 70, 85, 99, 115, 132,
2961 150, 169, 190, 212, 235,
2963 Double_t weightsBins[20] = { 28.3084, 8.43277, 4.07753, 1.54359, 0.543318,
2964 0.208394, 0.0652349, 0.0186904, 0.00834528, 0.00301414,
2965 0.00125939, 0.000474403, 0.000244052, 0.00011924, 6.09838e-05,
2966 3.24148e-05, 1.84314e-05, 1.00926e-05, 5.68632e-06, 8.38092e-06};
2968 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2969 if (bin < 20) weight = weightsBins[bin];
2972 Double_t ptHardBinRanges[6] = { 7, 9, 12, 16, 21, 1000};
2973 Double_t weightsBins[5] = { 0.00672445, 0.00799158, 0.00678934, 0.00463908, 0.00600068};
2975 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2976 if (bin < 5) weight = weightsBins[bin];
2979 Double_t ptHardBinRanges[7] = { 14, 19, 26, 35, 48, 66, 1000};
2980 Double_t weightsBins[6] = { 0.00608281, 0.00393646, 0.00200138, 0.000986267, 0.000389051, 0.0001863};
2982 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2983 if (bin < 6) weight = weightsBins[bin];
2986 Double_t ptHardBinRanges[8] = { 0, 5, 11, 21, 36, 57, 84, 1000};
2987 Double_t weightsBins[7] = { 0.00151999, 0.000100346, 1.27688e-05, 1.82388e-06, 3.08506e-07, 6.00308e-08, 1.88414e-08};
2989 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2990 if (bin < 7) weight = weightsBins[bin];
2993 Double_t ptHardBinRanges[11] = { 5, 11, 21, 36, 57,
2994 84, 117, 152, 191, 234,
2996 Double_t weightsBins[10] = { 2.24185e-6 , 2.48463e-7, 2.23171e-8, 2.43667e-9, 3.29934e-10,
2997 5.34592e-11, 1.00937e-11, 2.6493e-12, 8.53912e-13, 5.43077e-13};
2999 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
3000 if (bin < 10) weight = weightsBins[bin];
3002 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16, 21, 28, 36, 45, 57, 70, 85, 99, 115, 132, 150, 169, 190, 212, 235, 10000};
3003 Double_t weightsBins[20] = {2.723740E+01, 8.127540E+00, 3.934400E+00, 1.492720E+00, 5.268010E-01, 2.033790E-01, 6.361520E-02, 2.256080E-02, 9.638840E-03, 3.372890E-03, 1.381980E-03, 5.121390E-04, 2.613120E-04, 1.260940E-04, 6.393150E-05, 3.386080E-05, 1.926040E-05, 1.046950E-05, 5.895950E-06, 8.658420E-06};
3005 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
3006 if (bin < 20) weight = weightsBins[bin];
3008 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16, 21, 28, 36, 45, 57, 70, 85, 99, 115, 132, 150, 169, 190, 212, 235, 10000};
3009 Double_t weightsBins[20] = {2.716550E+01, 8.121430E+00, 3.932100E+00, 1.492830E+00, 5.272190E-01, 2.023090E-01, 6.371860E-02, 2.245360E-02, 9.590340E-03, 3.369300E-03, 1.384470E-03, 5.119390E-04, 2.606910E-04, 1.259110E-04, 6.408650E-05, 3.396290E-05, 1.917340E-05, 1.044610E-05, 5.882680E-06, 8.672390E-06};
3011 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
3012 if (bin < 20) weight = weightsBins[bin];
3014 Double_t ptHardBinRanges[7] = { 5, 11, 21, 36, 57, 84, 10000};
3015 Double_t weightsBins[6] = { 0.000212409, 3.12964e-05, 5.07523e-06, 9.67792e-07, 2.06531e-07, 8.05828e-08};
3017 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
3018 if (bin < 6) weight = weightsBins[bin];
3020 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16, 21, 28, 36, 45, 57, 70, 85, 99, 115, 132, 150, 169, 190, 212, 235, 10000};
3021 Double_t weightsBins[20] = { 16.1083, 4.60917, 2.15196, 0.782021, 0.26541,
3022 0.0978374, 0.0294286, 0.00989457, 0.0040615, 0.00135787,
3023 0.000531766, 0.000188772, 9.23331e-05, 4.30245e-05, 2.10196e-05,
3024 1.06695e-05, 5.78742e-06, 3.02897e-06, 1.62702e-06, 2.12118e-06 };
3027 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
3028 if (bin < 20) weight = weightsBins[bin];
3033 if (weight == -1)
return kFALSE;
3034 else return eventAccepted;
3049 AliGenCocktailEventHeader *cHeader = 0x0;
3050 Bool_t headerFound = kFALSE;
3069 cHeader =
dynamic_cast<AliGenCocktailEventHeader*
>(mcEvent->GenEventHeader());
3070 if(cHeader) headerFound = kTRUE;
3079 TList *genHeaders = 0x0;
3080 if(cHeader) genHeaders = cHeader->GetHeaders();
3081 AliGenEventHeader* gh = 0;
3082 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
3083 gh = (AliGenEventHeader*)genHeaders->At(i);
3084 TString GeneratorName = gh->GetName();
3085 if (GeneratorName.CompareTo(
"AliGenPythiaEventHeader") == 0 || GeneratorName.Contains(
"Pythia8Jets")){
3086 AliGenPythiaEventHeader* gPythia =
dynamic_cast<AliGenPythiaEventHeader*
>(gh);
3087 NTrials = gPythia->Trials();
3088 XSection = gPythia->GetXsection();
3093 AliGenEventHeader * eventHeader = mcEvent->GenEventHeader();
3095 TString eventHeaderName = eventHeader->ClassName();
3096 if (eventHeaderName.CompareTo(
"AliGenPythiaEventHeader") == 0 || eventHeaderName.Contains(
"Pythia8Jets")){
3097 AliGenPythiaEventHeader* gPythia =
dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader);
3098 NTrials = gPythia->Trials();
3099 XSection = gPythia->GetXsection();
3106 if(event->IsA()==AliAODEvent::Class()){
3107 AliAODMCHeader *mch = NULL;
3110 mch =
dynamic_cast<AliAODMCHeader*
>(aod->FindListObject(
"mcHeader"));
3112 Int_t nGenerators = mch->GetNCocktailHeaders();
3113 if ( nGenerators > 0 ){
3114 for(
Int_t igen = 0; igen < nGenerators; igen++)
3116 AliGenEventHeader * eventHeaderGen = mch->GetCocktailHeader(igen) ;
3117 TString name = eventHeaderGen->GetName();
3118 if (name.CompareTo(
"AliGenPythiaEventHeader") == 0 || name.Contains(
"Pythia8Jets")){
3119 AliGenPythiaEventHeader* gPythia =
dynamic_cast<AliGenPythiaEventHeader*
>(eventHeaderGen);
3120 NTrials = gPythia->Trials();
3121 XSection = gPythia->GetXsection();
3141 AliGenCocktailEventHeader *cHeader = 0x0;
3142 Bool_t headerFound = kFALSE;
3157 cHeader =
dynamic_cast<AliGenCocktailEventHeader*
>(mcEvent->GenEventHeader());
3158 if(cHeader) headerFound = kTRUE;
3165 TList *genHeaders = 0x0;
3166 if(cHeader) genHeaders = cHeader->GetHeaders();
3167 AliGenEventHeader* gh = 0;
3168 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
3169 gh = (AliGenEventHeader*)genHeaders->At(i);
3170 TString GeneratorName = gh->GetName();
3171 if (GeneratorName.CompareTo(
"AliGenPythiaEventHeader") == 0 || GeneratorName.Contains(
"Pythia8Jets")){
3172 return dynamic_cast<AliGenPythiaEventHeader*
>(gh)->
GetPtHard();
3176 AliGenEventHeader * eventHeader = mcEvent->GenEventHeader();
3178 TString eventHeaderName = eventHeader->ClassName();
3179 if (eventHeaderName.CompareTo(
"AliGenPythiaEventHeader") == 0 || eventHeaderName.Contains(
"Pythia8Jets")){
3180 return dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader)->
GetPtHard();
3184 if(event->IsA()==AliAODEvent::Class()){
3185 AliAODMCHeader *mch = NULL;
3188 mch =
dynamic_cast<AliAODMCHeader*
>(aod->FindListObject(
"mcHeader"));
3190 Int_t nGenerators = mch->GetNCocktailHeaders();
3191 if ( nGenerators > 0 ){
3192 for(
Int_t igen = 0; igen < nGenerators; igen++)
3194 AliGenEventHeader * eventHeaderGen = mch->GetCocktailHeader(igen) ;
3195 TString name = eventHeaderGen->GetName();
3196 if (name.CompareTo(
"AliGenPythiaEventHeader") == 0 || name.Contains(
"Pythia8Jets")){
3197 return dynamic_cast<AliGenPythiaEventHeader*
>(eventHeaderGen)->
GetPtHard();
3216 Int_t runRangesEMCalL0 [52] = { 144871, 145288, 146375, 146382,
3218 150209, 153056, 153911, 153915,
3219 158135, 158136, 158178, 158182, 160683,
3220 160764, 161139, 161256, 161379, 161457,
3221 161525, 161556, 161558, 161609, 161630,
3223 173731, 177144, 177147, 177653, 177724, 178327,
3242 Double_t thresholdEMCalL0[51] = { 2.11, 3.43, 1.71, 2.05,
3244 1.94, 3.39, 4.01, 5.25, 5.5,
3245 2.05, 5.50, 2.05, 5.50, 2.05, 1.71, 5.50, 1.71, 5.50, 1.71, 5.50, 1.71, 5.50, 1.71, 5.50, 1.71,
3246 2.01, 1.75, 1.52, 2.01, 1.52, 1.85,
3266 Double_t spreadEMCalL0[51] = { 0., 0., 0, 0,
3269 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
3270 0., 0., 0., 0., 0.2, 0.2,
3290 Int_t runRangesEMCalL1[21] = { 179796,
3309 Double_t thresholdEMCalL1[20] = { 9.5,
3328 Double_t spreadEMCalL1[20] = { 1.0,
3348 Int_t runRangesEMCalL1G2[21] = { 195180,
3366 Double_t thresholdEMCalL1G2[19] = { 7.2,
3384 Double_t spreadEMCalL1G2[19] = { 0.3,
3403 Int_t runnumber =
event->GetRunNumber();
3406 if (runnumber < runRangesEMCalL0[0])
return kTRUE;
3408 while (!(runnumber >= runRangesEMCalL0[binRun] && runnumber < runRangesEMCalL0[binRun+1] ) && binRun < 51 ){
3412 if (binRun==51)
return kFALSE;
3414 Double_t threshold = thresholdEMCalL0[binRun];
3416 if (isMC && spreadEMCalL0[binRun] != 0.){
3417 TF1* triggerSmearing =
new TF1(
"triggerSmearing",
"[0]*exp(-0.5*((x-[1])/[2])**2)",0,15);
3418 triggerSmearing->SetParameter(0, 1/(spreadEMCalL0[binRun]*TMath::Sqrt(TMath::Pi()*2)));
3419 triggerSmearing->SetParameter(1, thresholdEMCalL0[binRun]);
3420 triggerSmearing->SetParameter(2, spreadEMCalL0[binRun]);
3421 threshold = triggerSmearing->GetRandom();
3422 delete triggerSmearing;
3427 TClonesArray * arrClustersMimic = NULL;
3429 nclus =
event->GetNumberOfCaloClusters();
3431 arrClustersMimic =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3432 if(!arrClustersMimic)
3433 AliFatal(Form(
"%sClustersBranch was not found in AliConvEventCuts! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3434 nclus = arrClustersMimic->GetEntries();
3437 if(nclus == 0)
return kFALSE;
3440 Bool_t eventIsAccepted = kFALSE;
3441 for(
Int_t i = 0; i < nclus; i++){
3442 if (eventIsAccepted)
continue;
3443 AliVCluster* clus = NULL;
3444 if(event->IsA()==AliESDEvent::Class()){
3445 if(arrClustersMimic)
3446 clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMimic->At(i));
3448 clus =
event->GetCaloCluster(i);
3449 }
else if(event->IsA()==AliAODEvent::Class()){
3450 if(arrClustersMimic)
3451 clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMimic->At(i));
3453 clus =
event->GetCaloCluster(i);
3457 if(arrClustersMimic)
delete clus;
3460 if (!clus->IsEMCAL()) {
3461 if(arrClustersMimic)
delete clus;
3464 if (clus->GetM02()<0.1) {
3465 if(arrClustersMimic)
delete clus;
3468 if (clus->GetNCells()<2) {
3469 if(arrClustersMimic)
delete clus;
3472 if (clus->E() > threshold ){
3474 eventIsAccepted = kTRUE;
3476 if(arrClustersMimic)
3479 return eventIsAccepted;
3486 if (runnumber < runRangesEMCalL1[0])
return kTRUE;
3488 while (!(runnumber >= runRangesEMCalL1[binRun] && runnumber < runRangesEMCalL1[binRun+1] ) && binRun < 20 ){
3492 if (binRun==20)
return kFALSE;
3493 Double_t threshold = thresholdEMCalL1[binRun];
3495 if (isMC && spreadEMCalL1[binRun] != 0.){
3496 TF1* triggerSmearing =
new TF1(
"triggerSmearing",
"[0]*exp(-0.5*((x-[1])/[2])**2)",0,15);
3497 triggerSmearing->SetParameter(0, 1/(spreadEMCalL1[binRun]*TMath::Sqrt(TMath::Pi()*2)));
3498 triggerSmearing->SetParameter(1, thresholdEMCalL1[binRun]);
3499 triggerSmearing->SetParameter(2, spreadEMCalL1[binRun]);
3500 threshold = triggerSmearing->GetRandom();
3501 delete triggerSmearing;
3506 TClonesArray * arrClustersMimic = NULL;
3509 nclus =
event->GetNumberOfCaloClusters();
3511 arrClustersMimic =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3512 if(!arrClustersMimic)
3513 AliFatal(Form(
"%sClustersBranch was not found in AliConvEventCuts! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3514 nclus = arrClustersMimic->GetEntries();
3517 if(nclus == 0)
return kFALSE;
3520 Bool_t eventIsAccepted = kFALSE;
3521 for(
Int_t i = 0; i < nclus; i++){
3522 if (eventIsAccepted)
continue;
3523 AliVCluster* clus = NULL;
3524 if(event->IsA()==AliESDEvent::Class()){
3525 if(arrClustersMimic)
3526 clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMimic->At(i));
3528 clus =
event->GetCaloCluster(i);
3529 }
else if(event->IsA()==AliAODEvent::Class()){
3530 if(arrClustersMimic)
3531 clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMimic->At(i));
3533 clus =
event->GetCaloCluster(i);
3536 if(arrClustersMimic)
delete clus;
3539 if (!clus->IsEMCAL()) {
3540 if(arrClustersMimic)
delete clus;
3543 if (clus->GetM02()<0.1) {
3544 if(arrClustersMimic)
delete clus;
3547 if (clus->GetNCells()<2) {
3548 if(arrClustersMimic)
delete clus;
3551 if (clus->E() > threshold ){
3553 eventIsAccepted = kTRUE;
3555 if(arrClustersMimic)
3558 return eventIsAccepted;
3560 if (runnumber < runRangesEMCalL1G2[0])
return kTRUE;
3562 while (!(runnumber >= runRangesEMCalL1G2[binRun] && runnumber < runRangesEMCalL1G2[binRun+1] ) && binRun < 19 ){
3567 if (binRun==19)
return kFALSE;
3568 Double_t threshold = thresholdEMCalL1G2[binRun];
3569 if (isMC && spreadEMCalL1G2[binRun] != 0.){
3570 TF1* triggerSmearing =
new TF1(
"triggerSmearing",
"[0]*exp(-0.5*((x-[1])/[2])**2)",0,15);
3571 triggerSmearing->SetParameter(0, 1/(spreadEMCalL1G2[binRun]*TMath::Sqrt(TMath::Pi()*2)));
3572 triggerSmearing->SetParameter(1, thresholdEMCalL1G2[binRun]);
3573 triggerSmearing->SetParameter(2, spreadEMCalL1G2[binRun]);
3574 threshold = triggerSmearing->GetRandom();
3575 delete triggerSmearing;
3580 TClonesArray * arrClustersMimic = NULL;
3582 nclus =
event->GetNumberOfCaloClusters();
3584 arrClustersMimic =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3585 if(!arrClustersMimic)
3586 AliFatal(Form(
"%sClustersBranch was not found in AliConvEventCuts! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3587 nclus = arrClustersMimic->GetEntries();
3590 if(nclus == 0)
return kFALSE;
3593 Bool_t eventIsAccepted = kFALSE;
3594 for(
Int_t i = 0; i < nclus; i++){
3595 if (eventIsAccepted)
continue;
3596 AliVCluster* clus = NULL;
3597 if(event->IsA()==AliESDEvent::Class()){
3598 if(arrClustersMimic)
3599 clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMimic->At(i));
3601 clus =
event->GetCaloCluster(i);
3602 }
else if(event->IsA()==AliAODEvent::Class()){
3603 if(arrClustersMimic)
3604 clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMimic->At(i));
3606 clus =
event->GetCaloCluster(i);
3609 if(arrClustersMimic)
delete clus;
3612 if (!clus->IsEMCAL()) {
3613 if(arrClustersMimic)
delete clus;
3616 if (clus->GetM02()<0.1) {
3617 if(arrClustersMimic)
delete clus;
3620 if (clus->GetNCells()<2) {
3621 if(arrClustersMimic)
delete clus;
3624 if (clus->E() > threshold ){
3626 eventIsAccepted = kTRUE;
3628 if(arrClustersMimic)
3631 return eventIsAccepted;
3648 AliInputEventHandler *fInputHandler=(AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
3651 UInt_t isSelected = AliVEvent::kAny;
3653 if (fInputHandler==NULL)
return kFALSE;
3654 if( fInputHandler->GetEventSelection() ||
event->IsA()==AliAODEvent::Class()) {
3656 TString firedTrigClass =
event->GetFiredTriggerClasses();
3697 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3699 if (fInputHandler->IsEventSelected() & AliVEvent::kMB) isSelected = 0;
3701 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8) isSelected = 0;
3705 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3706 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3708 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8) isSelected = 0;
3709 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3716 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3718 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3720 if (firedTrigClass.Contains(
"7EG2")) isSelected = 0;
3723 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8) isSelected = 0;
3724 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3725 if (firedTrigClass.Contains(
"8EG2")) isSelected = 0;
3728 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3730 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3733 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3734 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3739 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3740 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3741 if (firedTrigClass.Contains(
"7EG1")) isSelected = 0;
3743 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8) isSelected = 0;
3744 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3745 if (firedTrigClass.Contains(
"8EG1")) isSelected = 0;
3747 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3748 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3750 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3751 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3755 if (isSelected != 0 ){
3787 for (
Int_t i=0; i<ClassesList->GetEntriesFast();++i){
3788 TObjString *NameClass = (TObjString*)ClassesList->At(i);
3789 if (firedTrigClass.Contains(NameClass->GetString())) isSelected = 1;
3793 for (
Int_t i=0; i<ClassesList->GetEntriesFast();++i){
3794 TObjString *NameClass = (TObjString*)ClassesList->At(i);
3795 if (firedTrigClass.Contains(NameClass->GetString())) isSelected = 1;
3799 for (
Int_t i=0; i<ClassesList->GetEntriesFast();++i){
3800 TObjString *NameClass = (TObjString*)ClassesList->At(i);
3801 if (firedTrigClass.Contains(NameClass->GetString())) isSelected = 1;
3806 for (
Int_t i=0; i<ClassesList->GetEntriesFast(); i++){
3807 TObjString *NameClass = (TObjString*)ClassesList->At(i);
3808 if (firedTrigClass.Contains(NameClass->GetString())) CheckClass+=
"1";
3809 else CheckClass+=
"0";
3811 if(CheckClass.Contains(
"0")) isSelected = 0;
3818 fIsSDDFired = !(fInputHandler->IsEventSelected() & AliVEvent::kFastOnly);
3820 Bool_t mimickedTrigger = kTRUE;
3827 if (mimickedTrigger){
3828 if (fInputHandler->IsEventSelected() & AliVEvent::kMB)
hTriggerClass->Fill(0);
3829 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7)
hTriggerClass->Fill(1);
3830 if (fInputHandler->IsEventSelected() & AliVEvent::kMUON)
hTriggerClass->Fill(2);
3831 if (fInputHandler->IsEventSelected() & AliVEvent::kHighMult)
hTriggerClass->Fill(3);
3832 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC1)
hTriggerClass->Fill(4);
3833 if (fInputHandler->IsEventSelected() & AliVEvent::kCINT5)
hTriggerClass->Fill(5);
3834 if (fInputHandler->IsEventSelected() & AliVEvent::kCMUS5)
hTriggerClass->Fill(6);
3836 if (fInputHandler->IsEventSelected() & AliVEvent::kMUSH7)
hTriggerClass->Fill(7);
3838 if (fInputHandler->IsEventSelected() & AliVEvent::kMUL7)
hTriggerClass->Fill(8);
3840 if (fInputHandler->IsEventSelected() & AliVEvent::kMUU7)
hTriggerClass->Fill(9);
3842 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7)
hTriggerClass->Fill(10);
3844 if (fInputHandler->IsEventSelected() & AliVEvent::kMUS7)
hTriggerClass->Fill(11);
3845 if (fInputHandler->IsEventSelected() & AliVEvent::kPHI1)
hTriggerClass->Fill(12);
3846 if (fInputHandler->IsEventSelected() & AliVEvent::kPHI7)
hTriggerClass->Fill(13);
3849 if (fInputHandler->IsEventSelected() & AliVEvent::kEMCEJE)
hTriggerClass->Fill(14);
3850 if (fInputHandler->IsEventSelected() & AliVEvent::kEMCEGA)
hTriggerClass->Fill(15);
3851 if (fInputHandler->IsEventSelected() & AliVEvent::kCentral)
hTriggerClass->Fill(16);
3852 if (fInputHandler->IsEventSelected() & AliVEvent::kSemiCentral)
hTriggerClass->Fill(17);
3853 if (fInputHandler->IsEventSelected() & AliVEvent::kDG5)
hTriggerClass->Fill(18);
3854 if (fInputHandler->IsEventSelected() & AliVEvent::kZED)
hTriggerClass->Fill(19);
3855 if (fInputHandler->IsEventSelected() & AliVEvent::kSPI7)
hTriggerClass->Fill(20);
3857 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8)
hTriggerClass->Fill(21);
3858 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonSingleLowPt8)
hTriggerClass->Fill(22);
3859 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonSingleHighPt8)
hTriggerClass->Fill(23);
3860 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonLikeLowPt8)
hTriggerClass->Fill(24);
3861 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonUnlikeLowPt8)
hTriggerClass->Fill(25);
3862 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonUnlikeLowPt0)
hTriggerClass->Fill(26);
3863 if (fInputHandler->IsEventSelected() & AliVEvent::kUserDefined)
hTriggerClass->Fill(27);
3864 if (fInputHandler->IsEventSelected() & AliVEvent::kTRD)
hTriggerClass->Fill(28);
3865 if (fInputHandler->IsEventSelected() & AliVEvent::kFastOnly)
hTriggerClass->Fill(29);
3866 if (fInputHandler->IsEventSelected() & AliVEvent::kAnyINT)
hTriggerClass->Fill(30);
3867 if (fInputHandler->IsEventSelected() & AliVEvent::kAny)
hTriggerClass->Fill(31);
3868 if (!fInputHandler->IsEventSelected())
hTriggerClass->Fill(34);
3874 if (mimickedTrigger){
3906 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonSingleLowPt8)
hTriggerClassSelected->Fill(22);
3907 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonSingleHighPt8)
hTriggerClassSelected->Fill(23);
3909 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonUnlikeLowPt8)
hTriggerClassSelected->Fill(25);
3910 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonUnlikeLowPt0)
hTriggerClassSelected->Fill(26);
3920 if(!isSelected)
return kFALSE;
3922 if (!mimickedTrigger )
return kFALSE;
3949 if(rejection == 0)
return;
3951 AliGenCocktailEventHeader *cHeader = 0x0;
3952 AliAODMCHeader *cHeaderAOD = 0x0;
3953 Bool_t headerFound = kFALSE;
3954 AliMCEvent *fMCEvent = 0x0;
3955 TClonesArray *fMCEventAOD = 0x0;
3956 if(event->IsA()==AliMCEvent::Class()){
3957 if(dynamic_cast<AliMCEvent*>(event)){
3958 cHeader =
dynamic_cast<AliGenCocktailEventHeader*
>(
dynamic_cast<AliMCEvent*
>(event)->GenEventHeader());
3959 fMCEvent =
dynamic_cast<AliMCEvent*
>(event);
3960 if(cHeader) headerFound = kTRUE;
3963 if(event->IsA()==AliAODEvent::Class()){
3964 cHeaderAOD =
dynamic_cast<AliAODMCHeader*
>(
event->FindListObject(AliAODMCHeader::StdBranchName()));
3965 fMCEventAOD =
dynamic_cast<TClonesArray*
>(
event->FindListObject(AliAODMCParticle::StdBranchName()));
3966 if(cHeaderAOD) headerFound = kTRUE;
3969 if (
fDebugLevel > 0 ) cout <<
"event starts here" << endl;
3971 TList *genHeaders = 0x0;
3972 if(cHeader) genHeaders = cHeader->GetHeaders();
3974 genHeaders = cHeaderAOD->GetCocktailHeaders();
3975 if(genHeaders->GetEntries()==1){
3980 AliGenEventHeader* gh = 0;
3982 Int_t firstindexA = 0;
3983 Int_t lastindexA = -1;
3984 if(rejection == 1 || rejection == 3)
fnHeaders = 1;
3986 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
3987 gh = (AliGenEventHeader*)genHeaders->At(i);
3988 TString GeneratorName = gh->GetName();
3989 lastindexA = lastindexA + gh->NProduced();
3990 if (
fDebugLevel > 0 ) cout << i <<
"\t" << GeneratorName.Data() << endl;
3991 for(
Int_t j = 0; j<HeaderList->GetEntries();j++){
3992 TString GeneratorInList = ((TObjString*)HeaderList->At(j))->GetString();
3993 if (
fDebugLevel > 0 ) cout << GeneratorInList.Data() << endl;
3994 if(GeneratorInList.Contains(GeneratorName) ){
3996 if (GeneratorInList.BeginsWith(
"PARAM") || GeneratorInList.CompareTo(
"BOX") == 0 ){
3999 if (
fDebugLevel > 2 )cout <<
"number of produced particle: " << gh->NProduced() << endl;
4000 if (
fDebugLevel > 2 )cout <<
"pdg-code of first particle: " << fMCEvent->Particle(firstindexA)->GetPdgCode() << endl;
4002 if (gh->NProduced() > 10 && fMCEvent->Particle(firstindexA+10)->GetPdgCode() ==
fAddedSignalPDGCode && GeneratorInList.CompareTo(
"BOX") == 0){
4006 }
else if (gh->NProduced() == 3 && GeneratorInList.Contains(
"PARAM_EMC") && (i == 3 || i == 5) ){
4007 if (
fDebugLevel > 2 ) cout <<
"accepted EMC header "<< endl;
4011 }
else if (gh->NProduced() > 2 && GeneratorInList.Contains(
"PARAM_PHOS") && (i == 4 || i == 6) ){
4012 if (
fDebugLevel > 2 ) cout <<
"accepted PHOS header "<< endl;
4027 AliAODMCParticle *aodMCParticle =
static_cast<AliAODMCParticle*
>(fMCEventAOD->At(firstindexA));
4030 if (gh->NProduced() > 10 && GeneratorInList.CompareTo(
"BOX") == 0){
4031 AliAODMCParticle *aodMCParticle2 =
static_cast<AliAODMCParticle*
>(fMCEventAOD->At(firstindexA+10));
4037 }
else if (gh->NProduced() == 3 && GeneratorInList.Contains(
"PARAM_EMC") && (i == 3 || i == 5) ){
4038 if (
fDebugLevel > 2 ) cout <<
"accepted EMC header "<< endl;
4042 }
else if (gh->NProduced() > 2 && GeneratorInList.Contains(
"PARAM_PHOS") && (i == 4 || i == 6) ){
4043 if (
fDebugLevel > 2 ) cout <<
"accepted PHOS header "<< endl;
4059 if(GeneratorName.CompareTo(GeneratorInList) == 0 ){
4066 firstindexA = firstindexA + gh->NProduced();
4075 if(rejection == 1 || rejection == 3){
4077 fNotRejectedEnd[0] = ((AliGenEventHeader*)genHeaders->At(0))->NProduced()-1;
4078 fGeneratorNames[0] = ((AliGenEventHeader*)genHeaders->At(0))->GetName();
4083 Int_t firstindex = 0;
4084 Int_t lastindex = -1;
4087 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
4088 gh = (AliGenEventHeader*)genHeaders->At(i);
4089 TString GeneratorName = gh->GetName();
4090 lastindex = lastindex + gh->NProduced();
4091 if (
fDebugLevel > 0 ) cout << i <<
"\t" << GeneratorName.Data() << endl;
4092 for(
Int_t j = 0; j<HeaderList->GetEntries();j++){
4093 TString GeneratorInList = ((TObjString*)HeaderList->At(j))->GetString();
4094 if(GeneratorInList.Contains(GeneratorName) ){
4095 if (GeneratorInList.Contains(
"PARAM") || GeneratorInList.CompareTo(
"BOX") == 0 ){
4099 if (
fDebugLevel > 0 ) cout <<
"produced " << gh->NProduced() <<
" with box generator" << endl;
4100 if (gh->NProduced() > 10 && fMCEvent->Particle(firstindex+10)->GetPdgCode() ==
fAddedSignalPDGCode && GeneratorInList.CompareTo(
"BOX") == 0){
4101 if (
fDebugLevel > 0 ) cout <<
"one of them was a pi0 or eta" << endl;
4106 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4108 }
else if (gh->NProduced() == 3 && GeneratorInList.Contains(
"PARAM_EMC") && (i == 3 || i == 5) ){
4113 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4115 }
else if (gh->NProduced() > 2 && GeneratorInList.Contains(
"PARAM_PHOS") && (i == 4 || i == 6) ){
4120 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4134 AliAODMCParticle *aodMCParticle =
static_cast<AliAODMCParticle*
>(fMCEventAOD->At(firstindex));
4137 if (gh->NProduced() > 10 && GeneratorInList.CompareTo(
"BOX") == 0) {
4138 AliAODMCParticle *aodMCParticle2 =
static_cast<AliAODMCParticle*
>(fMCEventAOD->At(firstindex+10));
4146 }
else if (gh->NProduced() == 3 && GeneratorInList.Contains(
"PARAM_EMC") && (i == 3 || i == 5) ){
4151 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4153 }
else if (gh->NProduced() > 2 && GeneratorInList.Contains(
"PARAM_PHOS") && (i == 4 || i == 6) ){
4158 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4172 }
else if(GeneratorName.CompareTo(GeneratorInList) == 0 ){
4176 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4183 firstindex = firstindex + gh->NProduced();
4186 for (
Int_t i = 0; i < number; i++){
4196 fNotRejectedEnd[0] =
static_cast<AliMCEvent*
>(event)->GetNumberOfPrimaries()-1;
4213 if(index < 0)
return 0;
4216 if(!InputEvent || InputEvent->IsA()==AliESDEvent::Class()){
4217 if(!mcEvent)
return 0;
4218 if(index >= mcEvent->GetNumberOfPrimaries()){
4219 if( ((TParticle*)mcEvent->Particle(index))->GetMother(0) < 0)
return 0;
4227 if(i == 0) accepted = 2;
4230 if (debug > 1 && !accepted) cout <<
"rejected:" << index << endl;
4232 else if(InputEvent->IsA()==AliAODEvent::Class()){
4233 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(InputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
4234 if (AODMCTrackArray){
4235 AliAODMCParticle *aodMCParticle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(index));
4236 if(!aodMCParticle)
return 0;
4237 if(!aodMCParticle->IsPrimary()){
4238 if( aodMCParticle->GetMother() < 0)
return 0;
4241 index = TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(index))->GetLabel());
4245 if(i == 0) accepted = 2;
4258 if (mcEvent){isMC = kTRUE;}
4286 Int_t runnumber =
event->GetRunNumber();
4287 if ((runnumber>=144871) && (runnumber<=146860)) {
4289 AliVCaloCells *cells =
event->GetEMCALCells();
4290 const Short_t nCells = cells->GetNumberOfCells();
4292 if (event->IsA()==AliESDEvent::Class()) AliAnalysisManager::GetAnalysisManager()->LoadBranch(
"EMCALCells.");
4294 AliInputEventHandler *fInputHandler=(AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
4295 if (!fInputHandler)
return 3;
4298 Int_t nCellCount[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
4299 for(
Int_t iCell=0; iCell<nCells; ++iCell) {
4300 Short_t cellId = cells->GetCellNumber(iCell);
4301 Double_t cellE = cells->GetCellAmplitude(cellId);
4302 Int_t sm = cellId / (24*48);
4303 if (cellE>0.1) ++nCellCount[sm];
4306 Bool_t fIsLedEvent = kFALSE;
4307 if (nCellCount[4] > 100) {
4308 fIsLedEvent = kTRUE;
4310 if ((runnumber>=146858) && (runnumber<=146860)) {
4311 if ((fInputHandler->IsEventSelected() & AliVEvent::kMB) && (nCellCount[3]>=21))
4312 fIsLedEvent = kTRUE;
4313 else if ((fInputHandler->IsEventSelected() & AliVEvent::kEMC1) && (nCellCount[3]>=35))
4314 fIsLedEvent = kTRUE;
4324 Int_t nClustersLayer0 =
event->GetNumberOfITSClusters(0);
4325 Int_t nClustersLayer1 =
event->GetNumberOfITSClusters(1);
4326 Int_t nTracklets =
event->GetMultiplicity()->GetNumberOfTracklets();
4331 if(event->IsA()==AliESDEvent::Class()){
4335 for(
Int_t i=0; i<nPileVert;i++){
4336 const AliESDVertex* pv= ((
AliESDEvent*)event)->GetPileupVertexSPD(i);
4337 Int_t nc2 = pv->GetNContributors();
4342 if (TMath::Abs(distZMax) < TMath::Abs(distZ) ){
4356 if(event->IsPileupFromSPD(3,0.8,3.,2.,5.) ){
4360 if (
fUtils->IsSPDClusterVsTrackletBG(event)){
4366 if(
fUtils->IsPileUpEvent(event) ){
4370 if (
fUtils->IsSPDClusterVsTrackletBG(event)){
4391 AliEventplane *EventPlane =
event->GetEventplane();
4404 AliInfo(
"Inside the GetWeightForCentralityFlattening function");
4407 if(!event || event->IsA()==AliESDEvent::Class()){
4410 AliCentrality *fESDCentrality=(AliCentrality*)esdEvent->GetCentrality();
4412 centrality = fESDCentrality->GetCentralityPercentile(
"V0M");
4415 }
else if(event->IsA()==AliAODEvent::Class()){
4418 if(aodEvent->GetHeader()){
4419 centrality = ((AliVAODHeader*)aodEvent->GetHeader())->
GetCentrality();
4425 Float_t GetValueForWeight = 1.;
4428 Bool_t CorrCentrLoop = kFALSE;
4434 CorrCentrLoop = kTRUE;
4438 CorrCentrLoop = kTRUE;
4440 CorrCentrLoop = kFALSE;
4443 if (CorrCentrLoop && GetValueForWeight != 0. && maximum !=0. && isfinite(GetValueForWeight) && isfinite(maximum) ){
4444 weightCentrality = maximum/GetValueForWeight;
4445 if (!isfinite(GetValueForWeight)) weightCentrality = 1.;
4446 if (!isfinite(weightCentrality)) weightCentrality = 1.;
4449 return weightCentrality;
4468 if (relativeErrorData < 0.2 && relativeErrorMC < 0.2 ){
4469 if (isfinite(valueMultData) && isfinite(valueMultMC) ){
4470 weightMult = valueMultData/valueMultMC;
4489 if(index < 0)
return 0;
4497 if (kCaseGen == 0)
return 1;
4502 if(!event || event->IsA()==AliESDEvent::Class()){
4503 mesonPt = ((TParticle*)mcEvent->Particle(index))->Pt();
4505 PDGCode = ((TParticle*)mcEvent->Particle(index))->GetPdgCode();
4506 }
else if(event->IsA()==AliAODEvent::Class()){
4507 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
event->FindListObject(AliAODMCParticle::StdBranchName()));
4508 if (AODMCTrackArray){
4509 AliAODMCParticle *aodMCParticle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(index));
4510 mesonPt = aodMCParticle->Pt();
4512 PDGCode = aodMCParticle->GetPdgCode();
4518 Float_t functionResultMC = 1.;
4529 Float_t functionResultData = 1;
4541 if (PDGCode == 111 || PDGCode == 221){
4542 if (functionResultData != 0. && functionResultMC != 0. && isfinite(functionResultData) && isfinite(functionResultMC)){
4543 weight = functionResultData/functionResultMC;
4544 if ( kCaseGen == 3){
4545 if (PDGCode == 111){
4550 if (PDGCode == 221){
4556 if (!isfinite(functionResultData)) weight = 1.;
4557 if (!isfinite(weight)) weight = 1.;
4559 }
else if (PDGCode == 310 && functionResultMC != 0 && isfinite(functionResultMC)){
4560 weight = functionResultMC;
4576 printf(
" Gamma Conversion Cuts %s :: pPb Run doing Eta Shift of %f \n\n",(
GetCutNumber()).
Data(),-0.465);
4579 printf(
" Gamma Conversion Cuts %s :: Pbp Run doing Eta Shift of %f \n\n",(
GetCutNumber()).
Data(),0.465);
4582 else printf(
" Gamma Conversion Cuts %s :: Automatic Eta Shift requested but Period is not known -> No Shift \n\n",(
GetCutNumber()).
Data());
4594 AliError(Form(
"%s: fTriggerPatchInfo not available",GetName()));
4602 AliEMCALTriggerPatchInfo *patch;
4603 for (
Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
4605 if (patch->IsMainTrigger()) {
4622 if (event->IsA()==AliESDEvent::Class()){
4632 AliError(Form(
"%s: Could not retrieve calo triggers %s!", GetName(),
fCaloTriggersName.Data()));
4638 if (event->IsA()==AliESDEvent::Class()){
4670 AliEMCALTriggerPatchInfo *patch;
4672 for (
Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
4677 if (patch->IsGammaHigh()){
4681 if (patch->IsGammaLow()){
4685 if (patch->IsJetHigh()){
4689 if (patch->IsJetLow()){
4693 if (patch->IsLevel0()){
4704 AliDebug(2,
"Patch summary: ");
4705 AliDebug(2, Form(
"Number of patches: %d", nPatch));
4706 AliDebug(2, Form(
"Level0: [%d]" ,nL0));
4707 AliDebug(2, Form(
"Jet: low[%d], high[%d]" ,nJ2, nJ1));
4708 AliDebug(2, Form(
"Gamma: low[%d], high[%d]" ,nG2, nG1));
4720 SETBIT(triggers,
kG1);
4722 SETBIT(triggers,
kG2);
4724 SETBIT(triggers,
kJ1);
4726 SETBIT(triggers,
kJ2);
4728 SETBIT(triggers,
kL0);
4747 TClonesArray *arr = 0;
4749 if (!sname.IsNull()) {
4750 arr =
dynamic_cast<TClonesArray*
>(
event->FindListObject(sname));
4752 AliWarning(Form(
"%s: Could not retrieve array with name %s!", GetName(), name));
4762 TString objname(arr->GetClass()->GetName());
4763 TClass cls(objname);
4764 if (!cls.InheritsFrom(clname)) {
4765 AliWarning(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
4766 GetName(), cls.GetName(), name, clname));
4775 if (eventpos < 0)
return kFALSE;
4776 TParticle* particle = (TParticle *)mcEvent->Particle(eventpos);
4777 if (!particle)
return kFALSE;
4778 if (TMath::Abs(particle->GetPdgCode()) == 11 ){
4779 if (particle->GetMother(0) != -1){
4780 TParticle* particleMother = (TParticle *)mcEvent->Particle(particle->GetMother(0));
4781 if (particleMother){
4782 if (TMath::Abs(particleMother->GetPdgCode()) == 22)
4783 particle = particleMother;
4787 if (particle->GetMother(0) != -1){
4788 Double_t deltaX = particle->Vx() - prodVtxX;
4789 Double_t deltaY = particle->Vy() - prodVtxY;
4790 Double_t deltaZ = particle->Vz() - prodVtxZ;
4793 Double_t realRadius3D = TMath::Sqrt(deltaX*deltaX+deltaY*deltaY+deltaZ*deltaZ);
4796 Bool_t dalitzCand = kFALSE;
4798 TParticle* firstmother = (TParticle *)mcEvent->Particle(particle->GetMother(0));
4799 if (!firstmother)
return kFALSE;
4800 Int_t pdgCodeFirstMother = firstmother->GetPdgCode();
4801 Bool_t intDecay = kFALSE;
4802 if ( pdgCodeFirstMother == 111 || pdgCodeFirstMother == 221 ) intDecay = kTRUE;
4803 if ( intDecay && TMath::Abs(particle->GetPdgCode()) == 11 ){
4808 Long_t source = particle->GetMother(0);
4809 Bool_t foundExcludedPart = kFALSE;
4810 Bool_t foundShower = kFALSE;
4811 Int_t pdgCodeMotherPrev = 0;
4812 Int_t pdgCodeMotherPPrevMother = 0;
4820 TParticle* mother = (TParticle *)mcEvent->Particle(source);
4821 source = mother->GetMother(0);
4823 Int_t pdgCodeMother = mother->GetPdgCode();
4825 if (pdgCodeMother == pdgCodeMotherPrev && pdgCodeMother == pdgCodeMotherPPrevMother) depth = 20;
4826 if (TMath::Abs(pdgCodeMother) == 11 && TMath::Abs(pdgCodeMotherPrev) == 22 && TMath::Abs(pdgCodeMotherPPrevMother) == 11 ){
4827 foundShower = kTRUE;
4830 if (TMath::Abs(pdgCodeMother) == 22 && TMath::Abs(pdgCodeMotherPrev) == 11 && TMath::Abs(pdgCodeMotherPPrevMother) == 22 ){
4831 foundShower = kTRUE;
4843 if (TMath::Abs(pdgCodeMother) == 310 || TMath::Abs(pdgCodeMother) == 130 || TMath::Abs(pdgCodeMother) == 321 ||
4844 TMath::Abs(pdgCodeMother) == 3122 || TMath::Abs(pdgCodeMother) == 3212 || TMath::Abs(pdgCodeMother) == 3222 ||
4845 TMath::Abs(pdgCodeMother) == 3112 || TMath::Abs(pdgCodeMother) == 3322 || TMath::Abs(pdgCodeMother) == 3312
4847 foundExcludedPart = kTRUE;
4850 pdgCodeMotherPPrevMother = pdgCodeMotherPrev;
4851 pdgCodeMotherPrev = pdgCodeMother;
4852 if (source == -1) depth = 20;
4858 if (foundExcludedPart){
4864 }
else if (foundShower){
4879 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
event->FindListObject(AliAODMCParticle::StdBranchName()));
4880 if (AODMCTrackArray == NULL)
return kFALSE;
4881 AliAODMCParticle* currentParticle = AODMCParticle;
4882 if (TMath::Abs(currentParticle->GetPdgCode()) == 11 ){
4883 if (currentParticle->GetMother() != -1){
4884 AliAODMCParticle* particleMother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(currentParticle->GetMother()));
4885 if (particleMother){
4886 if (TMath::Abs(particleMother->GetPdgCode()) == 22)
4887 currentParticle = particleMother;
4891 if (currentParticle->GetMother() > -1){
4892 Double_t deltaX = currentParticle->Xv() - prodVtxX;
4893 Double_t deltaY = currentParticle->Yv() - prodVtxY;
4894 Double_t deltaZ = currentParticle->Zv() - prodVtxZ;
4897 Double_t realRadius3D = TMath::Sqrt(deltaX*deltaX+deltaY*deltaY+deltaZ*deltaZ);
4899 Bool_t dalitzCand = kFALSE;
4901 AliAODMCParticle* firstmother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(currentParticle->GetMother()));
4902 if (!firstmother)
return kFALSE;
4903 Int_t pdgCodeFirstMother = firstmother->GetPdgCode();
4904 Bool_t intDecay = kFALSE;
4905 if ( pdgCodeFirstMother == 111 || pdgCodeFirstMother == 221 ) intDecay = kTRUE;
4906 if ( intDecay && TMath::Abs(currentParticle->GetPdgCode()) == 11 ){
4911 Long_t source = currentParticle->GetMother();
4912 Bool_t foundExcludedPart = kFALSE;
4913 Bool_t foundShower = kFALSE;
4914 Int_t pdgCodeMotherPrev = 0;
4915 Int_t pdgCodeMotherPPrevMother = 0;
4923 AliAODMCParticle* mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(source));
4924 source = mother->GetMother();
4926 Int_t pdgCodeMother = mother->GetPdgCode();
4928 if (pdgCodeMother == pdgCodeMotherPrev && pdgCodeMother == pdgCodeMotherPPrevMother) depth = 20;
4929 if (TMath::Abs(pdgCodeMother) == 11 && TMath::Abs(pdgCodeMotherPrev) == 22 && TMath::Abs(pdgCodeMotherPPrevMother) == 11 ){
4930 foundShower = kTRUE;
4933 if (TMath::Abs(pdgCodeMother) == 22 && TMath::Abs(pdgCodeMotherPrev) == 11 && TMath::Abs(pdgCodeMotherPPrevMother) == 22 ){
4934 foundShower = kTRUE;
4946 if (TMath::Abs(pdgCodeMother) == 310 || TMath::Abs(pdgCodeMother) == 130 || TMath::Abs(pdgCodeMother) == 321 ||
4947 TMath::Abs(pdgCodeMother) == 3122 || TMath::Abs(pdgCodeMother) == 3212 || TMath::Abs(pdgCodeMother) == 3222 ||
4948 TMath::Abs(pdgCodeMother) == 3112 || TMath::Abs(pdgCodeMother) == 3322 || TMath::Abs(pdgCodeMother) == 3312)
4950 foundExcludedPart = kTRUE;
4953 pdgCodeMotherPPrevMother = pdgCodeMotherPrev;
4954 pdgCodeMotherPrev = pdgCodeMother;
4955 if (source == -1) depth = 20;
4961 if (foundExcludedPart){
4967 }
else if (foundShower){
4982 if (particle != NULL && mcEvent != NULL){
4983 Int_t pdgSecondary = 0;
4987 Long_t motherID = particle->GetMother(0);
4988 Long_t grandMotherID = -1;
4992 grandMotherID = mcEvent->Particle(motherID)->GetMother(0);
4994 if (grandMotherID > -1){
4996 pdgSecondary = mcEvent->Particle(grandMotherID)->GetPdgCode();
5003 Long_t motherID = particle->GetMother(0);
5004 Long_t grandMotherID = -1;
5005 Long_t greatGrandMotherID = -1;
5009 grandMotherID = mcEvent->Particle(motherID)->GetMother(0);
5011 if (grandMotherID > -1){
5013 greatGrandMotherID = mcEvent->Particle(grandMotherID)->GetMother(0);
5015 if (greatGrandMotherID > -1){
5017 pdgSecondary = mcEvent->Particle(greatGrandMotherID)->GetPdgCode();
5023 if (TMath::Abs(pdgSecondary) == 3122 )
5026 else if ( TMath::Abs(pdgSecondary) == 310 )
5029 else if ( TMath::Abs(pdgSecondary) == 130 )
5032 else if ( TMath::Abs(pdgSecondary) == 221 )
5035 else if ( TMath::Abs(pdgSecondary) != 0 )