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");
1067 printf(
"\t maximum factor between jet and pt hard = %2.2f \n",
fMaxFacPtHard);
1160 AliError(Form(
"SetHeavyIon not defined %d",isHeavyIon));
1170 if(minCentrality<0||minCentrality>20){
1171 AliError(Form(
"minCentrality not defined %d",minCentrality));
1183 if(maxCentrality<0||maxCentrality>20){
1184 AliError(Form(
"maxCentrality not defined %d",maxCentrality));
1195 switch(selectSpecialTrigger){
1225 fOfflineTriggerMask=AliVEvent::kPHI7 | AliVEvent::kPHI1 | AliVEvent::kPHI8 | AliVEvent::kPHOSPb;
1252 AliError(
"Warning: Special Trigger Not known");
1263 switch(selectSpecialSubTriggerClass){
1274 AliError(
"Warning: Special Subtrigger Class Not known");
1278 switch(selectSpecialSubTriggerClass){
1303 AliError(
"Warning: Special Subtrigger Class Not known");
1307 switch(selectSpecialSubTriggerClass){
1403 AliError(
"Warning: Special Subtrigger Class Not known");
1407 switch(selectSpecialSubTriggerClass){
1454 AliError(
"Warning: Special Subtrigger Class Not known");
1458 switch(selectSpecialSubTriggerClass){
1507 AliError(
"Warning: Special Subtrigger Class Not known");
1511 switch(selectSpecialSubTriggerClass){
1539 AliError(
"Warning: Special Subtrigger Class Not known");
1543 switch(selectSpecialSubTriggerClass){
1587 AliError(
"Warning: Special Subtrigger Class Not known");
1591 switch(selectSpecialSubTriggerClass){
1683 AliError(
"Warning: Special Subtrigger Class Not known");
1687 switch(selectSpecialSubTriggerClass){
1765 AliError(
"Warning: Special Subtrigger Class Not known");
1789 switch(removePileUp){
1934 fUtils->SetASPDCvsTCut(200.);
1935 fUtils->SetBSPDCvsTCut(7.);
1950 AliError(
"RemovePileUpCut not defined");
1959 switch(extraSignal){
1973 AliError(Form(
"Extra Signal Rejection not defined %d",extraSignal));
2008 AliError(Form(
"Vertex Cut not defined %d",vertexCut));
2055 AliMultSelection *MultSelection = (AliMultSelection*)event->FindListObject(
"MultSelection");
2057 AliWarning (
"AliMultSelection object not found !");
2061 if(
fIsHeavyIon==2)
return MultSelection->GetMultiplicityPercentile(
"V0A");
2062 else return MultSelection->GetMultiplicityPercentile(
"V0M");
2063 }
else if(
fDetectorCentrality==1)
return MultSelection->GetMultiplicityPercentile(
"CL1",kTRUE);
2066 AliCentrality *fESDCentrality = (AliCentrality*)esdEvent->GetCentrality();
2068 if(
fIsHeavyIon==2)
return fESDCentrality->GetCentralityPercentile(
"V0A");
2069 else return fESDCentrality->GetCentralityPercentile(
"V0M");
2077 AliMultSelection *MultSelection = (AliMultSelection*)aodEvent->FindListObject(
"MultSelection");
2079 AliWarning (
"AliMultSelection object not found !");
2083 if(
fIsHeavyIon==2)
return MultSelection->GetMultiplicityPercentile(
"V0A");
2084 else return MultSelection->GetMultiplicityPercentile(
"V0M",kTRUE);
2085 }
else if(
fDetectorCentrality==1)
return MultSelection->GetMultiplicityPercentile(
"CL1",kTRUE);
2088 if(aodEvent->GetHeader()){
return ((AliVAODHeader*)aodEvent->GetHeader())->
GetCentrality();}
2103 Int_t primaryTracksPP[9] = { 0, 2, 5, 10, 15,
2118 if(centrality<0 && !mcEvent)
return kFALSE;
2120 Int_t centralityC=0;
2122 centralityC=
Int_t(centrality/10);
2128 centralityC=
Int_t(centrality);
2131 }
else return kFALSE;
2134 centralityC=
Int_t(centrality);
2137 }
else return kFALSE;
2140 Int_t PrimaryTracks10[11][2] =
2154 Int_t PrimaryTracksLHC11h10[11][2] =
2168 Int_t PrimaryTracksLHC15o10[11][2] =
2182 Int_t PrimaryTracksLHC10h5[21][2] =
2206 Int_t PrimaryTracksLHC11h5[21][2] =
2230 Int_t PrimaryTracksLHC15o5[21][2] =
2254 Int_t PrimaryTracksLHC17n10[11][2] =
2270 if(event->IsA()==AliESDEvent::Class()) column = 0;
2271 if(event->IsA()==AliAODEvent::Class()) column = 1;
2287 centralityC=
Int_t(centrality/10);
2289 if(
fCentralityMin==0 && nprimaryTracks >= PrimaryTracksLHC15o10[0][column])
return kFALSE;
2291 }
else return kFALSE;
2300 centralityC=
Int_t(centrality/10);
2315 centralityC =
Int_t(centrality);
2317 if(
fCentralityMin==0 && nprimaryTracks >= PrimaryTracksLHC15o5[0][column])
return kFALSE;
2319 }
else return kFALSE;
2328 centralityC=
Int_t(centrality);
2331 }
else return kFALSE;
2335 Int_t PrimaryTracksLHC11h10AltMin[11][2] =
2349 Int_t PrimaryTracksLHC11h10AltMax[11][2] =
2363 Int_t PrimaryTracksLHC11h5AltMin[21][2] =
2387 Int_t PrimaryTracksLHC11h5AltMax[21][2] =
2416 if(nprimaryTracks > PrimaryTracksLHC11h10AltMin[
fCentralityMax][column] && nprimaryTracks <= PrimaryTracksLHC11h10AltMax[
fCentralityMin][column])
2424 centralityC=
Int_t(centrality/10);
2434 if(nprimaryTracks > PrimaryTracksLHC11h5AltMin[
fCentralityMax][column] && nprimaryTracks <= PrimaryTracksLHC11h5AltMax[
fCentralityMin][column])
2441 centralityC=
Int_t(centrality);
2444 }
else return kFALSE;
2454 Double_t fVertexZ=
event->GetPrimaryVertex()->GetZ();
2458 fVertexZSPD = fESDEvent->GetPrimaryVertexSPD()->GetZ();
2462 fVertexZSPD = fAODEvent->GetPrimaryVertexSPD()->GetZ();
2465 if(TMath::Abs(fVertexZ)>
fMaxVertexZ)
return kFALSE;
2469 if (TMath::Abs(fVertexZ-fVertexZSPD) > 0.1)
return kFALSE;
2472 if(!
fUtils->IsVertexSelected2013pA(event))
return kFALSE;
2483 TBits fIR1 =
event->GetHeader()->GetIRInt1InteractionMap();
2484 TBits fIR2 =
event->GetHeader()->GetIRInt2InteractionMap();
2485 UShort_t bunchCrossings =
event->GetBunchCrossNumber();
2487 for(
Int_t i = 0; i<180;i++){
2488 if(fIR1.TestBitNumber(i))
2493 Bool_t isOutOfBunchPileup = 0;
2496 if(pf1 < -89) pf1 = -89;
2497 if(pf2 > 89) pf2 = 89;
2498 Int_t pf2maxForT0 = pf2;
2500 for (
Int_t i=pf1;i<=pf2;i++) {
2502 if (i<=pf2maxForT0) isOutOfBunchPileup|=fIR2.TestBitNumber(90+i);
2503 if (i>0 && i<=ir1skip)
continue;
2504 isOutOfBunchPileup|=fIR1.TestBitNumber(90+i);
2506 return isOutOfBunchPileup;
2512 Bool_t isPileUpV0MTPCout=0;
2517 multV0M =
event->GetVZEROData()->GetMTotV0A();
2519 multV0M =
event->GetVZEROData()->GetMTotV0A() +
event->GetVZEROData()->GetMTotV0C() ;
2524 if (multV0M < valFunc ) isPileUpV0MTPCout=1;
2527 return isPileUpV0MTPCout;
2536 if (fESDEvent->GetPrimaryVertex() != NULL){
2537 if(fESDEvent->GetPrimaryVertex()->GetNContributors()>0) {
2539 return fESDEvent->GetPrimaryVertex()->GetNContributors();
2543 if(fESDEvent->GetPrimaryVertexSPD() !=NULL){
2544 if(fESDEvent->GetPrimaryVertexSPD()->GetNContributors()>0) {
2546 return fESDEvent->GetPrimaryVertexSPD()->GetNContributors();
2548 AliWarning(Form(
"Number of contributors from bad vertex type:: %s",fESDEvent->GetPrimaryVertex()->GetName()));
2557 if (fAODEvent->GetPrimaryVertex() != NULL){
2558 if(fAODEvent->GetPrimaryVertex()->GetNContributors()>0) {
2559 return fAODEvent->GetPrimaryVertex()->GetNContributors();
2562 if(fAODEvent->GetPrimaryVertexSPD() !=NULL){
2563 if(fAODEvent->GetPrimaryVertexSPD()->GetNContributors()>0) {
2564 return fAODEvent->GetPrimaryVertexSPD()->GetNContributors();
2566 AliWarning(Form(
"Number of contributors from bad vertex type:: %s",fAODEvent->GetPrimaryVertex()->GetName()));
2579 AliGenCocktailEventHeader *cHeader = 0x0;
2580 Bool_t headerFound = kFALSE;
2601 cHeader =
dynamic_cast<AliGenCocktailEventHeader*
>(mcEvent->GenEventHeader());
2602 if(cHeader) headerFound = kTRUE;
2610 TList *genHeaders = 0x0;
2611 if(cHeader) genHeaders = cHeader->GetHeaders();
2612 AliGenEventHeader* gh = 0;
2613 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
2614 gh = (AliGenEventHeader*)genHeaders->At(i);
2615 TString GeneratorName = gh->GetName();
2616 if (GeneratorName.CompareTo(
"AliGenPythiaEventHeader") == 0 || GeneratorName.Contains(
"Pythia8Jets")){
2617 Bool_t eventAccepted = kTRUE;
2618 TParticle * jet = 0;
2619 Int_t nTriggerJets =
dynamic_cast<AliGenPythiaEventHeader*
>(gh)->NTriggerJets();
2622 for(
Int_t ijet = 0; ijet< nTriggerJets; ijet++){
2623 dynamic_cast<AliGenPythiaEventHeader*
>(gh)->TriggerJet(ijet, tmpjet);
2624 jet =
new TParticle(94, 21, -1, -1, -1, -1, tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3], 0,0,0,0);
2627 eventAccepted= kFALSE;
2631 if (jet)
delete jet;
2633 for(Long_t i = 0; i < mcEvent->GetNumberOfPrimaries(); i++) {
2634 TParticle* particle = (TParticle *)mcEvent->Particle(i);
2635 if (!particle)
continue;
2636 if (TMath::Abs(particle->GetPdgCode()) == 111 || TMath::Abs(particle->GetPdgCode()) == 221){
2638 eventAccepted= kFALSE;
2646 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2648 70, 85, 99, 115, 132,
2649 150, 169, 190, 212, 235,
2651 Double_t weightsBins[20] = { 43.7553, 13.5848, 6.788, 2.67826, 0.975255,
2652 0.39069, 0.127342, 0.0465597, 0.0206539, 0.00750243,
2653 0.00319118, 0.00122291, 0.000641232, 0.000321437, 0.000168273,
2654 9.17033e-05, 5.34755e-05, 3.01354e-05, 1.74518e-05, 2.8004e-05};
2656 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2657 if (bin < 20) weight = weightsBins[bin];
2660 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2662 70, 85, 99, 115, 132,
2663 150, 169, 190, 212, 235,
2665 Double_t weightsBins[20] = { 43.8654, 13.6215, 6.79856, 2.67526, 0.978794,
2666 0.390797, 0.127769, 0.0465714, 0.0206173, 0.00750282,
2667 0.00318773, 0.00122533, 0.000644385, 0.000321225, 0.00016846,
2668 9.18305e-05, 5.33507e-05, 3.00677e-05, 1.74608e-05, 2.80823e-05};
2671 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2672 if (bin < 20) weight = weightsBins[bin];
2675 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2677 70, 85, 99, 115, 132,
2678 150, 169, 190, 212, 235,
2680 Double_t weightsBins[20] = { 16.0869, 4.61169, 2.14976, 0.782544, 0.264854,
2681 9.7619E-02, 2.92747E-02, 9.89515E-03, 4.05152E-03, 1.35393E-03,
2682 5.29864E-04, 1.88317E-04, 9.23E-05, 4.29E-05, 2.09E-05,
2683 1.06E-05, 5.76E-06, 3.00E-06, 1.62E-06, 2.10E-06 };
2685 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2686 if (bin < 20) weight = weightsBins[bin];
2690 Double_t ptHardBinRanges[13] = { 5, 7, 9, 12, 16,
2693 Double_t weightsBins[12] = { 7.858393e-03, 4.718691e-03, 4.077575e-03, 2.814527e-03, 1.669625e-03,
2694 1.007535e-03, 4.536554e-04, 2.111041e-04, 1.094840e-04, 4.404973e-05,
2695 1.933238e-05, 1.562895e-05};
2697 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2698 if (bin < 12) weight = weightsBins[bin];
2701 Double_t ptHardBinRanges[20] = { 5, 11, 21, 36, 57,
2702 84, 117, 152, 191, 1000000,
2704 21, 28, 36, 45, 57 };
2705 Double_t weightsBins[19] = { 4.43629 , 0.49523, 0.0394921, 0.00383174, 0.000446559,
2706 6.37374e-05, 1.03134e-05, 2.27012e-06, 7.59281e-07, 0,
2707 2.62906, 1.12884, 0.656873, 0.262822, 0.0876732,
2708 0.0307759, 0.0087083, 0.0027664, 0.00106203};
2712 if (binFromFile != -1 && binFromFile >9 && ptHard < 57) bin = 9;
2713 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2714 if (bin < 19) weight = weightsBins[bin];
2717 Double_t ptHardBinRanges[20] = { 5, 11, 21, 36, 57,
2718 84, 117, 152, 191, 1000000,
2720 21, 28, 36, 45, 57 };
2722 Double_t weightsBins[19] = { 4.43897 , 0.495766, 0.039486, 0.00383011, 0.000447104,
2723 6.37277e-05, 1.03166e-05, 2.26971e-06, 7.59023e-07, 0,
2724 2.63331, 1.12815, 0.657034, 0.262756, 0.0877227,
2725 0.0307638, 0.00870635, 0.00276658, 0.00106229};
2728 if (binFromFile != -1 && binFromFile >9 && ptHard < 57) bin = 9;
2729 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2730 if (bin < 19) weight = weightsBins[bin];
2733 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2735 70, 85, 99, 115, 132,
2736 150, 169, 190, 212, 235,
2738 Double_t weightsBins[20] = { 28.3084, 8.43277, 4.07753, 1.54359, 0.543318,
2739 0.208394, 0.0652349, 0.0186904, 0.00834528, 0.00301414,
2740 0.00125939, 0.000474403, 0.000244052, 0.00011924, 6.09838e-05,
2741 3.24148e-05, 1.84314e-05, 1.00926e-05, 5.68632e-06, 8.38092e-06};
2743 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2744 if (bin < 20) weight = weightsBins[bin];
2747 Double_t ptHardBinRanges[6] = { 7, 9, 12, 16, 21, 1000};
2748 Double_t weightsBins[5] = { 0.00672445, 0.00799158, 0.00678934, 0.00463908, 0.00600068};
2750 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2751 if (bin < 5) weight = weightsBins[bin];
2754 Double_t ptHardBinRanges[7] = { 14, 19, 26, 35, 48, 66, 1000};
2755 Double_t weightsBins[6] = { 0.00608281, 0.00393646, 0.00200138, 0.000986267, 0.000389051, 0.0001863};
2757 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2758 if (bin < 6) weight = weightsBins[bin];
2761 Double_t ptHardBinRanges[8] = { 0, 5, 11, 21, 36, 57, 84, 1000};
2762 Double_t weightsBins[7] = { 0.00151999, 0.000100346, 1.27688e-05, 1.82388e-06, 3.08506e-07, 6.00308e-08, 1.88414e-08};
2764 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2765 if (bin < 7) weight = weightsBins[bin];
2768 Double_t ptHardBinRanges[11] = { 5, 11, 21, 36, 57,
2769 84, 117, 152, 191, 234,
2771 Double_t weightsBins[10] = { 2.24185e-6 , 2.48463e-7, 2.23171e-8, 2.43667e-9, 3.29934e-10,
2772 5.34592e-11, 1.00937e-11, 2.6493e-12, 8.53912e-13, 5.43077e-13};
2774 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2775 if (bin < 10) weight = weightsBins[bin];
2777 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};
2778 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};
2780 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2781 if (bin < 20) weight = weightsBins[bin];
2783 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};
2784 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};
2786 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2787 if (bin < 20) weight = weightsBins[bin];
2789 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};
2790 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};
2792 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2793 if (bin < 20) weight = weightsBins[bin];
2798 if (weight == -1)
return kFALSE;
2799 else return eventAccepted;
2804 AliGenEventHeader * eventHeader = mcEvent->GenEventHeader();
2805 TString eventHeaderName = eventHeader->ClassName();
2806 Bool_t eventAccepted = kFALSE;
2807 if (eventHeaderName.CompareTo(
"AliGenPythiaEventHeader") == 0 || eventHeaderName.Contains(
"Pythia8Jets")){
2808 eventAccepted = kTRUE;
2810 if(event->IsA()==AliAODEvent::Class()){
2811 AliAODMCHeader *mch = NULL;
2814 mch =
dynamic_cast<AliAODMCHeader*
>(aod->FindListObject(
"mcHeader"));
2816 Int_t nGenerators = mch->GetNCocktailHeaders();
2817 if ( nGenerators > 0 ){
2818 for(
Int_t igen = 0; igen < nGenerators; igen++)
2820 AliGenEventHeader * eventHeaderGen = mch->GetCocktailHeader(igen) ;
2821 TString name = eventHeaderGen->GetName();
2822 if (name.CompareTo(
"AliGenPythiaEventHeader") == 0 || name.Contains(
"Pythia8Jets")){
2823 eventAccepted = kTRUE;
2824 eventHeader = eventHeaderGen;
2833 TParticle * jet = 0;
2834 Int_t nTriggerJets =
dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader)->NTriggerJets();
2835 Float_t ptHard =
dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader)->
GetPtHard();
2837 for(
Int_t ijet = 0; ijet< nTriggerJets; ijet++){
2838 dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader)->TriggerJet(ijet, tmpjet);
2839 jet =
new TParticle(94, 21, -1, -1, -1, -1, tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3], 0,0,0,0);
2842 eventAccepted= kFALSE;
2847 for(Long_t i = 0; i < mcEvent->GetNumberOfPrimaries(); i++) {
2848 TParticle* particle = (TParticle *)mcEvent->Particle(i);
2849 if (!particle)
continue;
2850 if (TMath::Abs(particle->GetPdgCode()) == 111 || TMath::Abs(particle->GetPdgCode()) == 221){
2852 eventAccepted= kFALSE;
2860 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2862 70, 85, 99, 115, 132,
2863 150, 169, 190, 212, 235,
2865 Double_t weightsBins[20] = { 43.7553, 13.5848, 6.788, 2.67826, 0.975255,
2866 0.39069, 0.127342, 0.0465597, 0.0206539, 0.00750243,
2867 0.00319118, 0.00122291, 0.000641232, 0.000321437, 0.000168273,
2868 9.17033e-05, 5.34755e-05, 3.01354e-05, 1.74518e-05, 2.8004e-05};
2870 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2871 if (bin < 20) weight = weightsBins[bin];
2874 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2876 70, 85, 99, 115, 132,
2877 150, 169, 190, 212, 235,
2879 Double_t weightsBins[20] = { 43.8654, 13.6215, 6.79856, 2.67526, 0.978794,
2880 0.390797, 0.127769, 0.0465714, 0.0206173, 0.00750282,
2881 0.00318773, 0.00122533, 0.000644385, 0.000321225, 0.00016846,
2882 9.18305e-05, 5.33507e-05, 3.00677e-05, 1.74608e-05, 2.80823e-05};
2885 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2886 if (bin < 20) weight = weightsBins[bin];
2889 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2891 70, 85, 99, 115, 132,
2892 150, 169, 190, 212, 235,
2894 Double_t weightsBins[20] = { 16.0869, 4.61169, 2.14976, 0.782544, 0.264854,
2895 9.7619E-02, 2.92747E-02, 9.89515E-03, 4.05152E-03, 1.35393E-03,
2896 5.29864E-04, 1.88317E-04, 9.23E-05, 4.29E-05, 2.09E-05,
2897 1.06E-05, 5.76E-06, 3.00E-06, 1.62E-06, 2.10E-06 };
2899 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2900 if (bin < 20) weight = weightsBins[bin];
2904 Double_t ptHardBinRanges[13] = { 5, 7, 9, 12, 16,
2907 Double_t weightsBins[12] = { 7.858393e-03, 4.718691e-03, 4.077575e-03, 2.814527e-03, 1.669625e-03,
2908 1.007535e-03, 4.536554e-04, 2.111041e-04, 1.094840e-04, 4.404973e-05,
2909 1.933238e-05, 1.562895e-05};
2911 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2912 if (bin < 12) weight = weightsBins[bin];
2915 Double_t ptHardBinRanges[20] = { 5, 11, 21, 36, 57,
2916 84, 117, 152, 191, 1000000,
2918 21, 28, 36, 45, 57 };
2919 Double_t weightsBins[19] = { 4.43629 , 0.49523, 0.0394921, 0.00383174, 0.000446559,
2920 6.37374e-05, 1.03134e-05, 2.27012e-06, 7.59281e-07, 0,
2921 2.62906, 1.12884, 0.656873, 0.262822, 0.0876732,
2922 0.0307759, 0.0087083, 0.0027664, 0.00106203};
2926 if (binFromFile != -1 && binFromFile >9 && ptHard < 57) bin = 9;
2927 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2928 if (bin < 19) weight = weightsBins[bin];
2931 Double_t ptHardBinRanges[20] = { 5, 11, 21, 36, 57,
2932 84, 117, 152, 191, 1000000,
2934 21, 28, 36, 45, 57 };
2936 Double_t weightsBins[19] = { 4.43897 , 0.495766, 0.039486, 0.00383011, 0.000447104,
2937 6.37277e-05, 1.03166e-05, 2.26971e-06, 7.59023e-07, 0,
2938 2.63331, 1.12815, 0.657034, 0.262756, 0.0877227,
2939 0.0307638, 0.00870635, 0.00276658, 0.00106229};
2942 if (binFromFile != -1 && binFromFile >9 && ptHard < 57) bin = 9;
2943 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2944 if (bin < 19) weight = weightsBins[bin];
2947 Double_t ptHardBinRanges[21] = { 5, 7, 9, 12, 16,
2949 70, 85, 99, 115, 132,
2950 150, 169, 190, 212, 235,
2952 Double_t weightsBins[20] = { 28.3084, 8.43277, 4.07753, 1.54359, 0.543318,
2953 0.208394, 0.0652349, 0.0186904, 0.00834528, 0.00301414,
2954 0.00125939, 0.000474403, 0.000244052, 0.00011924, 6.09838e-05,
2955 3.24148e-05, 1.84314e-05, 1.00926e-05, 5.68632e-06, 8.38092e-06};
2957 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2958 if (bin < 20) weight = weightsBins[bin];
2961 Double_t ptHardBinRanges[6] = { 7, 9, 12, 16, 21, 1000};
2962 Double_t weightsBins[5] = { 0.00672445, 0.00799158, 0.00678934, 0.00463908, 0.00600068};
2964 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2965 if (bin < 5) weight = weightsBins[bin];
2968 Double_t ptHardBinRanges[7] = { 14, 19, 26, 35, 48, 66, 1000};
2969 Double_t weightsBins[6] = { 0.00608281, 0.00393646, 0.00200138, 0.000986267, 0.000389051, 0.0001863};
2971 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2972 if (bin < 6) weight = weightsBins[bin];
2975 Double_t ptHardBinRanges[8] = { 0, 5, 11, 21, 36, 57, 84, 1000};
2976 Double_t weightsBins[7] = { 0.00151999, 0.000100346, 1.27688e-05, 1.82388e-06, 3.08506e-07, 6.00308e-08, 1.88414e-08};
2978 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2979 if (bin < 7) weight = weightsBins[bin];
2982 Double_t ptHardBinRanges[11] = { 5, 11, 21, 36, 57,
2983 84, 117, 152, 191, 234,
2985 Double_t weightsBins[10] = { 2.24185e-6 , 2.48463e-7, 2.23171e-8, 2.43667e-9, 3.29934e-10,
2986 5.34592e-11, 1.00937e-11, 2.6493e-12, 8.53912e-13, 5.43077e-13};
2988 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2989 if (bin < 10) weight = weightsBins[bin];
2991 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};
2992 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};
2994 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
2995 if (bin < 20) weight = weightsBins[bin];
2997 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};
2998 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};
3000 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
3001 if (bin < 20) weight = weightsBins[bin];
3003 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};
3004 Double_t weightsBins[20] = { 16.1083, 4.60917, 2.15196, 0.782021, 0.26541,
3005 0.0978374, 0.0294286, 0.00989457, 0.0040615, 0.00135787,
3006 0.000531766, 0.000188772, 9.23331e-05, 4.30245e-05, 2.10196e-05,
3007 1.06695e-05, 5.78742e-06, 3.02897e-06, 1.62702e-06, 2.12118e-06 };
3010 while (!((ptHard< ptHardBinRanges[bin+1] && ptHard > ptHardBinRanges[bin]) || (ptHard == ptHardBinRanges[bin]) ) )bin++;
3011 if (bin < 20) weight = weightsBins[bin];
3016 if (weight == -1)
return kFALSE;
3017 else return eventAccepted;
3032 AliGenCocktailEventHeader *cHeader = 0x0;
3033 Bool_t headerFound = kFALSE;
3051 cHeader =
dynamic_cast<AliGenCocktailEventHeader*
>(mcEvent->GenEventHeader());
3052 if(cHeader) headerFound = kTRUE;
3061 TList *genHeaders = 0x0;
3062 if(cHeader) genHeaders = cHeader->GetHeaders();
3063 AliGenEventHeader* gh = 0;
3064 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
3065 gh = (AliGenEventHeader*)genHeaders->At(i);
3066 TString GeneratorName = gh->GetName();
3067 if (GeneratorName.CompareTo(
"AliGenPythiaEventHeader") == 0 || GeneratorName.Contains(
"Pythia8Jets")){
3068 AliGenPythiaEventHeader* gPythia =
dynamic_cast<AliGenPythiaEventHeader*
>(gh);
3069 NTrials = gPythia->Trials();
3070 XSection = gPythia->GetXsection();
3075 AliGenEventHeader * eventHeader = mcEvent->GenEventHeader();
3077 TString eventHeaderName = eventHeader->ClassName();
3078 if (eventHeaderName.CompareTo(
"AliGenPythiaEventHeader") == 0 || eventHeaderName.Contains(
"Pythia8Jets")){
3079 AliGenPythiaEventHeader* gPythia =
dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader);
3080 NTrials = gPythia->Trials();
3081 XSection = gPythia->GetXsection();
3088 if(event->IsA()==AliAODEvent::Class()){
3089 AliAODMCHeader *mch = NULL;
3092 mch =
dynamic_cast<AliAODMCHeader*
>(aod->FindListObject(
"mcHeader"));
3094 Int_t nGenerators = mch->GetNCocktailHeaders();
3095 if ( nGenerators > 0 ){
3096 for(
Int_t igen = 0; igen < nGenerators; igen++)
3098 AliGenEventHeader * eventHeaderGen = mch->GetCocktailHeader(igen) ;
3099 TString name = eventHeaderGen->GetName();
3100 if (name.CompareTo(
"AliGenPythiaEventHeader") == 0 || name.Contains(
"Pythia8Jets")){
3101 AliGenPythiaEventHeader* gPythia =
dynamic_cast<AliGenPythiaEventHeader*
>(eventHeaderGen);
3102 NTrials = gPythia->Trials();
3103 XSection = gPythia->GetXsection();
3123 AliGenCocktailEventHeader *cHeader = 0x0;
3124 Bool_t headerFound = kFALSE;
3139 cHeader =
dynamic_cast<AliGenCocktailEventHeader*
>(mcEvent->GenEventHeader());
3140 if(cHeader) headerFound = kTRUE;
3147 TList *genHeaders = 0x0;
3148 if(cHeader) genHeaders = cHeader->GetHeaders();
3149 AliGenEventHeader* gh = 0;
3150 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
3151 gh = (AliGenEventHeader*)genHeaders->At(i);
3152 TString GeneratorName = gh->GetName();
3153 if (GeneratorName.CompareTo(
"AliGenPythiaEventHeader") == 0 || GeneratorName.Contains(
"Pythia8Jets")){
3154 return dynamic_cast<AliGenPythiaEventHeader*
>(gh)->
GetPtHard();
3158 AliGenEventHeader * eventHeader = mcEvent->GenEventHeader();
3160 TString eventHeaderName = eventHeader->ClassName();
3161 if (eventHeaderName.CompareTo(
"AliGenPythiaEventHeader") == 0 || eventHeaderName.Contains(
"Pythia8Jets")){
3162 return dynamic_cast<AliGenPythiaEventHeader*
>(eventHeader)->
GetPtHard();
3166 if(event->IsA()==AliAODEvent::Class()){
3167 AliAODMCHeader *mch = NULL;
3170 mch =
dynamic_cast<AliAODMCHeader*
>(aod->FindListObject(
"mcHeader"));
3172 Int_t nGenerators = mch->GetNCocktailHeaders();
3173 if ( nGenerators > 0 ){
3174 for(
Int_t igen = 0; igen < nGenerators; igen++)
3176 AliGenEventHeader * eventHeaderGen = mch->GetCocktailHeader(igen) ;
3177 TString name = eventHeaderGen->GetName();
3178 if (name.CompareTo(
"AliGenPythiaEventHeader") == 0 || name.Contains(
"Pythia8Jets")){
3179 return dynamic_cast<AliGenPythiaEventHeader*
>(eventHeaderGen)->
GetPtHard();
3198 Int_t runRangesEMCalL0 [52] = { 144871, 145288, 146375, 146382,
3200 150209, 153056, 153911, 153915,
3201 158135, 158136, 158178, 158182, 160683,
3202 160764, 161139, 161256, 161379, 161457,
3203 161525, 161556, 161558, 161609, 161630,
3205 173731, 177144, 177147, 177653, 177724, 178327,
3224 Double_t thresholdEMCalL0[51] = { 2.11, 3.43, 1.71, 2.05,
3226 1.94, 3.39, 4.01, 5.25, 5.5,
3227 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,
3228 2.01, 1.75, 1.52, 2.01, 1.52, 1.85,
3248 Double_t spreadEMCalL0[51] = { 0., 0., 0, 0,
3251 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
3252 0., 0., 0., 0., 0.2, 0.2,
3272 Int_t runRangesEMCalL1[21] = { 179796,
3291 Double_t thresholdEMCalL1[20] = { 9.5,
3310 Double_t spreadEMCalL1[20] = { 1.0,
3330 Int_t runRangesEMCalL1G2[21] = { 195180,
3348 Double_t thresholdEMCalL1G2[19] = { 7.2,
3366 Double_t spreadEMCalL1G2[19] = { 0.3,
3385 Int_t runnumber =
event->GetRunNumber();
3388 if (runnumber < runRangesEMCalL0[0])
return kTRUE;
3390 while (!(runnumber >= runRangesEMCalL0[binRun] && runnumber < runRangesEMCalL0[binRun+1] ) && binRun < 51 ){
3394 if (binRun==51)
return kFALSE;
3396 Double_t threshold = thresholdEMCalL0[binRun];
3398 if (isMC && spreadEMCalL0[binRun] != 0.){
3399 TF1* triggerSmearing =
new TF1(
"triggerSmearing",
"[0]*exp(-0.5*((x-[1])/[2])**2)",0,15);
3400 triggerSmearing->SetParameter(0, 1/(spreadEMCalL0[binRun]*TMath::Sqrt(TMath::Pi()*2)));
3401 triggerSmearing->SetParameter(1, thresholdEMCalL0[binRun]);
3402 triggerSmearing->SetParameter(2, spreadEMCalL0[binRun]);
3403 threshold = triggerSmearing->GetRandom();
3404 delete triggerSmearing;
3409 TClonesArray * arrClustersMimic = NULL;
3411 nclus =
event->GetNumberOfCaloClusters();
3413 arrClustersMimic =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3414 if(!arrClustersMimic)
3415 AliFatal(Form(
"%sClustersBranch was not found in AliConvEventCuts! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3416 nclus = arrClustersMimic->GetEntries();
3419 if(nclus == 0)
return kFALSE;
3422 Bool_t eventIsAccepted = kFALSE;
3423 for(
Int_t i = 0; i < nclus; i++){
3424 if (eventIsAccepted)
continue;
3425 AliVCluster* clus = NULL;
3426 if(event->IsA()==AliESDEvent::Class()){
3427 if(arrClustersMimic)
3428 clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMimic->At(i));
3430 clus =
event->GetCaloCluster(i);
3431 }
else if(event->IsA()==AliAODEvent::Class()){
3432 if(arrClustersMimic)
3433 clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMimic->At(i));
3435 clus =
event->GetCaloCluster(i);
3439 if(arrClustersMimic)
delete clus;
3442 if (!clus->IsEMCAL()) {
3443 if(arrClustersMimic)
delete clus;
3446 if (clus->GetM02()<0.1) {
3447 if(arrClustersMimic)
delete clus;
3450 if (clus->GetNCells()<2) {
3451 if(arrClustersMimic)
delete clus;
3454 if (clus->E() > threshold ){
3456 eventIsAccepted = kTRUE;
3458 if(arrClustersMimic)
3461 return eventIsAccepted;
3468 if (runnumber < runRangesEMCalL1[0])
return kTRUE;
3470 while (!(runnumber >= runRangesEMCalL1[binRun] && runnumber < runRangesEMCalL1[binRun+1] ) && binRun < 20 ){
3474 if (binRun==20)
return kFALSE;
3475 Double_t threshold = thresholdEMCalL1[binRun];
3477 if (isMC && spreadEMCalL1[binRun] != 0.){
3478 TF1* triggerSmearing =
new TF1(
"triggerSmearing",
"[0]*exp(-0.5*((x-[1])/[2])**2)",0,15);
3479 triggerSmearing->SetParameter(0, 1/(spreadEMCalL1[binRun]*TMath::Sqrt(TMath::Pi()*2)));
3480 triggerSmearing->SetParameter(1, thresholdEMCalL1[binRun]);
3481 triggerSmearing->SetParameter(2, spreadEMCalL1[binRun]);
3482 threshold = triggerSmearing->GetRandom();
3483 delete triggerSmearing;
3488 TClonesArray * arrClustersMimic = NULL;
3491 nclus =
event->GetNumberOfCaloClusters();
3493 arrClustersMimic =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3494 if(!arrClustersMimic)
3495 AliFatal(Form(
"%sClustersBranch was not found in AliConvEventCuts! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3496 nclus = arrClustersMimic->GetEntries();
3499 if(nclus == 0)
return kFALSE;
3502 Bool_t eventIsAccepted = kFALSE;
3503 for(
Int_t i = 0; i < nclus; i++){
3504 if (eventIsAccepted)
continue;
3505 AliVCluster* clus = NULL;
3506 if(event->IsA()==AliESDEvent::Class()){
3507 if(arrClustersMimic)
3508 clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMimic->At(i));
3510 clus =
event->GetCaloCluster(i);
3511 }
else if(event->IsA()==AliAODEvent::Class()){
3512 if(arrClustersMimic)
3513 clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMimic->At(i));
3515 clus =
event->GetCaloCluster(i);
3518 if(arrClustersMimic)
delete clus;
3521 if (!clus->IsEMCAL()) {
3522 if(arrClustersMimic)
delete clus;
3525 if (clus->GetM02()<0.1) {
3526 if(arrClustersMimic)
delete clus;
3529 if (clus->GetNCells()<2) {
3530 if(arrClustersMimic)
delete clus;
3533 if (clus->E() > threshold ){
3535 eventIsAccepted = kTRUE;
3537 if(arrClustersMimic)
3540 return eventIsAccepted;
3542 if (runnumber < runRangesEMCalL1G2[0])
return kTRUE;
3544 while (!(runnumber >= runRangesEMCalL1G2[binRun] && runnumber < runRangesEMCalL1G2[binRun+1] ) && binRun < 19 ){
3549 if (binRun==19)
return kFALSE;
3550 Double_t threshold = thresholdEMCalL1G2[binRun];
3551 if (isMC && spreadEMCalL1G2[binRun] != 0.){
3552 TF1* triggerSmearing =
new TF1(
"triggerSmearing",
"[0]*exp(-0.5*((x-[1])/[2])**2)",0,15);
3553 triggerSmearing->SetParameter(0, 1/(spreadEMCalL1G2[binRun]*TMath::Sqrt(TMath::Pi()*2)));
3554 triggerSmearing->SetParameter(1, thresholdEMCalL1G2[binRun]);
3555 triggerSmearing->SetParameter(2, spreadEMCalL1G2[binRun]);
3556 threshold = triggerSmearing->GetRandom();
3557 delete triggerSmearing;
3562 TClonesArray * arrClustersMimic = NULL;
3564 nclus =
event->GetNumberOfCaloClusters();
3566 arrClustersMimic =
dynamic_cast<TClonesArray*
>(
event->FindListObject(Form(
"%sClustersBranch",
fCorrTaskSetting.Data())));
3567 if(!arrClustersMimic)
3568 AliFatal(Form(
"%sClustersBranch was not found in AliConvEventCuts! Check the correction framework settings!",
fCorrTaskSetting.Data()));
3569 nclus = arrClustersMimic->GetEntries();
3572 if(nclus == 0)
return kFALSE;
3575 Bool_t eventIsAccepted = kFALSE;
3576 for(
Int_t i = 0; i < nclus; i++){
3577 if (eventIsAccepted)
continue;
3578 AliVCluster* clus = NULL;
3579 if(event->IsA()==AliESDEvent::Class()){
3580 if(arrClustersMimic)
3581 clus =
new AliESDCaloCluster(*(AliESDCaloCluster*)arrClustersMimic->At(i));
3583 clus =
event->GetCaloCluster(i);
3584 }
else if(event->IsA()==AliAODEvent::Class()){
3585 if(arrClustersMimic)
3586 clus =
new AliAODCaloCluster(*(AliAODCaloCluster*)arrClustersMimic->At(i));
3588 clus =
event->GetCaloCluster(i);
3591 if(arrClustersMimic)
delete clus;
3594 if (!clus->IsEMCAL()) {
3595 if(arrClustersMimic)
delete clus;
3598 if (clus->GetM02()<0.1) {
3599 if(arrClustersMimic)
delete clus;
3602 if (clus->GetNCells()<2) {
3603 if(arrClustersMimic)
delete clus;
3606 if (clus->E() > threshold ){
3608 eventIsAccepted = kTRUE;
3610 if(arrClustersMimic)
3613 return eventIsAccepted;
3630 AliInputEventHandler *fInputHandler=(AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
3633 UInt_t isSelected = AliVEvent::kAny;
3635 if (fInputHandler==NULL)
return kFALSE;
3636 if( fInputHandler->GetEventSelection() ||
event->IsA()==AliAODEvent::Class()) {
3638 TString firedTrigClass =
event->GetFiredTriggerClasses();
3679 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3681 if (fInputHandler->IsEventSelected() & AliVEvent::kMB) isSelected = 0;
3683 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8) isSelected = 0;
3687 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3688 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3690 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8) isSelected = 0;
3691 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3698 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3700 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3702 if (firedTrigClass.Contains(
"7EG2")) isSelected = 0;
3705 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8) isSelected = 0;
3706 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3707 if (firedTrigClass.Contains(
"8EG2")) isSelected = 0;
3710 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3712 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3715 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3716 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3721 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3722 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3723 if (firedTrigClass.Contains(
"7EG1")) isSelected = 0;
3725 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8) isSelected = 0;
3726 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3727 if (firedTrigClass.Contains(
"8EG1")) isSelected = 0;
3729 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3730 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3732 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7) isSelected = 0;
3733 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7) isSelected = 0;
3737 if (isSelected != 0 ){
3769 for (
Int_t i=0; i<ClassesList->GetEntriesFast();++i){
3770 TObjString *NameClass = (TObjString*)ClassesList->At(i);
3771 if (firedTrigClass.Contains(NameClass->GetString())) isSelected = 1;
3775 for (
Int_t i=0; i<ClassesList->GetEntriesFast();++i){
3776 TObjString *NameClass = (TObjString*)ClassesList->At(i);
3777 if (firedTrigClass.Contains(NameClass->GetString())) isSelected = 1;
3781 for (
Int_t i=0; i<ClassesList->GetEntriesFast();++i){
3782 TObjString *NameClass = (TObjString*)ClassesList->At(i);
3783 if (firedTrigClass.Contains(NameClass->GetString())) isSelected = 1;
3788 for (
Int_t i=0; i<ClassesList->GetEntriesFast(); i++){
3789 TObjString *NameClass = (TObjString*)ClassesList->At(i);
3790 if (firedTrigClass.Contains(NameClass->GetString())) CheckClass+=
"1";
3791 else CheckClass+=
"0";
3793 if(CheckClass.Contains(
"0")) isSelected = 0;
3800 fIsSDDFired = !(fInputHandler->IsEventSelected() & AliVEvent::kFastOnly);
3802 Bool_t mimickedTrigger = kTRUE;
3809 if (mimickedTrigger){
3810 if (fInputHandler->IsEventSelected() & AliVEvent::kMB)
hTriggerClass->Fill(0);
3811 if (fInputHandler->IsEventSelected() & AliVEvent::kINT7)
hTriggerClass->Fill(1);
3812 if (fInputHandler->IsEventSelected() & AliVEvent::kMUON)
hTriggerClass->Fill(2);
3813 if (fInputHandler->IsEventSelected() & AliVEvent::kHighMult)
hTriggerClass->Fill(3);
3814 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC1)
hTriggerClass->Fill(4);
3815 if (fInputHandler->IsEventSelected() & AliVEvent::kCINT5)
hTriggerClass->Fill(5);
3816 if (fInputHandler->IsEventSelected() & AliVEvent::kCMUS5)
hTriggerClass->Fill(6);
3818 if (fInputHandler->IsEventSelected() & AliVEvent::kMUSH7)
hTriggerClass->Fill(7);
3820 if (fInputHandler->IsEventSelected() & AliVEvent::kMUL7)
hTriggerClass->Fill(8);
3822 if (fInputHandler->IsEventSelected() & AliVEvent::kMUU7)
hTriggerClass->Fill(9);
3824 if (fInputHandler->IsEventSelected() & AliVEvent::kEMC7)
hTriggerClass->Fill(10);
3826 if (fInputHandler->IsEventSelected() & AliVEvent::kMUS7)
hTriggerClass->Fill(11);
3827 if (fInputHandler->IsEventSelected() & AliVEvent::kPHI1)
hTriggerClass->Fill(12);
3828 if (fInputHandler->IsEventSelected() & AliVEvent::kPHI7)
hTriggerClass->Fill(13);
3831 if (fInputHandler->IsEventSelected() & AliVEvent::kEMCEJE)
hTriggerClass->Fill(14);
3832 if (fInputHandler->IsEventSelected() & AliVEvent::kEMCEGA)
hTriggerClass->Fill(15);
3833 if (fInputHandler->IsEventSelected() & AliVEvent::kCentral)
hTriggerClass->Fill(16);
3834 if (fInputHandler->IsEventSelected() & AliVEvent::kSemiCentral)
hTriggerClass->Fill(17);
3835 if (fInputHandler->IsEventSelected() & AliVEvent::kDG5)
hTriggerClass->Fill(18);
3836 if (fInputHandler->IsEventSelected() & AliVEvent::kZED)
hTriggerClass->Fill(19);
3837 if (fInputHandler->IsEventSelected() & AliVEvent::kSPI7)
hTriggerClass->Fill(20);
3839 if (fInputHandler->IsEventSelected() & AliVEvent::kINT8)
hTriggerClass->Fill(21);
3840 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonSingleLowPt8)
hTriggerClass->Fill(22);
3841 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonSingleHighPt8)
hTriggerClass->Fill(23);
3842 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonLikeLowPt8)
hTriggerClass->Fill(24);
3843 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonUnlikeLowPt8)
hTriggerClass->Fill(25);
3844 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonUnlikeLowPt0)
hTriggerClass->Fill(26);
3845 if (fInputHandler->IsEventSelected() & AliVEvent::kUserDefined)
hTriggerClass->Fill(27);
3846 if (fInputHandler->IsEventSelected() & AliVEvent::kTRD)
hTriggerClass->Fill(28);
3847 if (fInputHandler->IsEventSelected() & AliVEvent::kFastOnly)
hTriggerClass->Fill(29);
3848 if (fInputHandler->IsEventSelected() & AliVEvent::kAnyINT)
hTriggerClass->Fill(30);
3849 if (fInputHandler->IsEventSelected() & AliVEvent::kAny)
hTriggerClass->Fill(31);
3850 if (!fInputHandler->IsEventSelected())
hTriggerClass->Fill(34);
3856 if (mimickedTrigger){
3888 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonSingleLowPt8)
hTriggerClassSelected->Fill(22);
3889 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonSingleHighPt8)
hTriggerClassSelected->Fill(23);
3891 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonUnlikeLowPt8)
hTriggerClassSelected->Fill(25);
3892 if (fInputHandler->IsEventSelected() & AliVEvent::kMuonUnlikeLowPt0)
hTriggerClassSelected->Fill(26);
3902 if(!isSelected)
return kFALSE;
3904 if (!mimickedTrigger )
return kFALSE;
3931 if(rejection == 0)
return;
3933 AliGenCocktailEventHeader *cHeader = 0x0;
3934 AliAODMCHeader *cHeaderAOD = 0x0;
3935 Bool_t headerFound = kFALSE;
3936 AliMCEvent *fMCEvent = 0x0;
3937 TClonesArray *fMCEventAOD = 0x0;
3938 if(event->IsA()==AliMCEvent::Class()){
3939 if(dynamic_cast<AliMCEvent*>(event)){
3940 cHeader =
dynamic_cast<AliGenCocktailEventHeader*
>(
dynamic_cast<AliMCEvent*
>(event)->GenEventHeader());
3941 fMCEvent =
dynamic_cast<AliMCEvent*
>(event);
3942 if(cHeader) headerFound = kTRUE;
3945 if(event->IsA()==AliAODEvent::Class()){
3946 cHeaderAOD =
dynamic_cast<AliAODMCHeader*
>(
event->FindListObject(AliAODMCHeader::StdBranchName()));
3947 fMCEventAOD =
dynamic_cast<TClonesArray*
>(
event->FindListObject(AliAODMCParticle::StdBranchName()));
3948 if(cHeaderAOD) headerFound = kTRUE;
3951 if (
fDebugLevel > 0 ) cout <<
"event starts here" << endl;
3953 TList *genHeaders = 0x0;
3954 if(cHeader) genHeaders = cHeader->GetHeaders();
3956 genHeaders = cHeaderAOD->GetCocktailHeaders();
3957 if(genHeaders->GetEntries()==1){
3962 AliGenEventHeader* gh = 0;
3964 Int_t firstindexA = 0;
3965 Int_t lastindexA = -1;
3966 if(rejection == 1 || rejection == 3)
fnHeaders = 1;
3968 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
3969 gh = (AliGenEventHeader*)genHeaders->At(i);
3970 TString GeneratorName = gh->GetName();
3971 lastindexA = lastindexA + gh->NProduced();
3972 if (
fDebugLevel > 0 ) cout << i <<
"\t" << GeneratorName.Data() << endl;
3973 for(
Int_t j = 0; j<HeaderList->GetEntries();j++){
3974 TString GeneratorInList = ((TObjString*)HeaderList->At(j))->GetString();
3975 if (
fDebugLevel > 0 ) cout << GeneratorInList.Data() << endl;
3976 if(GeneratorInList.Contains(GeneratorName) ){
3978 if (GeneratorInList.BeginsWith(
"PARAM") || GeneratorInList.CompareTo(
"BOX") == 0 ){
3981 if (
fDebugLevel > 2 )cout <<
"number of produced particle: " << gh->NProduced() << endl;
3982 if (
fDebugLevel > 2 )cout <<
"pdg-code of first particle: " << fMCEvent->Particle(firstindexA)->GetPdgCode() << endl;
3984 if (gh->NProduced() > 10 && fMCEvent->Particle(firstindexA+10)->GetPdgCode() ==
fAddedSignalPDGCode && GeneratorInList.CompareTo(
"BOX") == 0){
3988 }
else if (gh->NProduced() == 3 && GeneratorInList.Contains(
"PARAM_EMC") && (i == 3 || i == 5) ){
3989 if (
fDebugLevel > 2 ) cout <<
"accepted EMC header "<< endl;
3993 }
else if (gh->NProduced() > 2 && GeneratorInList.Contains(
"PARAM_PHOS") && (i == 4 || i == 6) ){
3994 if (
fDebugLevel > 2 ) cout <<
"accepted PHOS header "<< endl;
4009 AliAODMCParticle *aodMCParticle =
static_cast<AliAODMCParticle*
>(fMCEventAOD->At(firstindexA));
4012 if (gh->NProduced() > 10 && GeneratorInList.CompareTo(
"BOX") == 0){
4013 AliAODMCParticle *aodMCParticle2 =
static_cast<AliAODMCParticle*
>(fMCEventAOD->At(firstindexA+10));
4019 }
else if (gh->NProduced() == 3 && GeneratorInList.Contains(
"PARAM_EMC") && (i == 3 || i == 5) ){
4020 if (
fDebugLevel > 2 ) cout <<
"accepted EMC header "<< endl;
4024 }
else if (gh->NProduced() > 2 && GeneratorInList.Contains(
"PARAM_PHOS") && (i == 4 || i == 6) ){
4025 if (
fDebugLevel > 2 ) cout <<
"accepted PHOS header "<< endl;
4041 if(GeneratorName.CompareTo(GeneratorInList) == 0 ){
4048 firstindexA = firstindexA + gh->NProduced();
4057 if(rejection == 1 || rejection == 3){
4059 fNotRejectedEnd[0] = ((AliGenEventHeader*)genHeaders->At(0))->NProduced()-1;
4060 fGeneratorNames[0] = ((AliGenEventHeader*)genHeaders->At(0))->GetName();
4065 Int_t firstindex = 0;
4066 Int_t lastindex = -1;
4069 for(
Int_t i = 0; i<genHeaders->GetEntries();i++){
4070 gh = (AliGenEventHeader*)genHeaders->At(i);
4071 TString GeneratorName = gh->GetName();
4072 lastindex = lastindex + gh->NProduced();
4073 if (
fDebugLevel > 0 ) cout << i <<
"\t" << GeneratorName.Data() << endl;
4074 for(
Int_t j = 0; j<HeaderList->GetEntries();j++){
4075 TString GeneratorInList = ((TObjString*)HeaderList->At(j))->GetString();
4076 if(GeneratorInList.Contains(GeneratorName) ){
4077 if (GeneratorInList.Contains(
"PARAM") || GeneratorInList.CompareTo(
"BOX") == 0 ){
4081 if (
fDebugLevel > 0 ) cout <<
"produced " << gh->NProduced() <<
" with box generator" << endl;
4082 if (gh->NProduced() > 10 && fMCEvent->Particle(firstindex+10)->GetPdgCode() ==
fAddedSignalPDGCode && GeneratorInList.CompareTo(
"BOX") == 0){
4083 if (
fDebugLevel > 0 ) cout <<
"one of them was a pi0 or eta" << endl;
4088 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4090 }
else if (gh->NProduced() == 3 && GeneratorInList.Contains(
"PARAM_EMC") && (i == 3 || i == 5) ){
4095 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4097 }
else if (gh->NProduced() > 2 && GeneratorInList.Contains(
"PARAM_PHOS") && (i == 4 || i == 6) ){
4102 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4116 AliAODMCParticle *aodMCParticle =
static_cast<AliAODMCParticle*
>(fMCEventAOD->At(firstindex));
4119 if (gh->NProduced() > 10 && GeneratorInList.CompareTo(
"BOX") == 0) {
4120 AliAODMCParticle *aodMCParticle2 =
static_cast<AliAODMCParticle*
>(fMCEventAOD->At(firstindex+10));
4128 }
else if (gh->NProduced() == 3 && GeneratorInList.Contains(
"PARAM_EMC") && (i == 3 || i == 5) ){
4133 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4135 }
else if (gh->NProduced() > 2 && GeneratorInList.Contains(
"PARAM_PHOS") && (i == 4 || i == 6) ){
4140 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4154 }
else if(GeneratorName.CompareTo(GeneratorInList) == 0 ){
4158 if (
fDebugLevel > 0 ) cout <<
"Number of particles produced for: " << i <<
"\t" << GeneratorName.Data() <<
"\t" << lastindex-firstindex+1 << endl;
4165 firstindex = firstindex + gh->NProduced();
4168 for (
Int_t i = 0; i < number; i++){
4178 fNotRejectedEnd[0] =
static_cast<AliMCEvent*
>(event)->GetNumberOfPrimaries()-1;
4195 if(index < 0)
return 0;
4198 if(!InputEvent || InputEvent->IsA()==AliESDEvent::Class()){
4199 if(!mcEvent)
return 0;
4200 if(index >= mcEvent->GetNumberOfPrimaries()){
4201 if( ((TParticle*)mcEvent->Particle(index))->GetMother(0) < 0)
return 0;
4209 if(i == 0) accepted = 2;
4212 if (debug > 1 && !accepted) cout <<
"rejected:" << index << endl;
4214 else if(InputEvent->IsA()==AliAODEvent::Class()){
4215 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(InputEvent->FindListObject(AliAODMCParticle::StdBranchName()));
4216 if (AODMCTrackArray){
4217 AliAODMCParticle *aodMCParticle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(index));
4218 if(!aodMCParticle)
return 0;
4219 if(!aodMCParticle->IsPrimary()){
4220 if( aodMCParticle->GetMother() < 0)
return 0;
4223 index = TMath::Abs(static_cast<AliAODMCParticle*>(AODMCTrackArray->At(index))->GetLabel());
4227 if(i == 0) accepted = 2;
4240 if (mcEvent){isMC = kTRUE;}
4268 Int_t runnumber =
event->GetRunNumber();
4269 if ((runnumber>=144871) && (runnumber<=146860)) {
4271 AliVCaloCells *cells =
event->GetEMCALCells();
4272 const Short_t nCells = cells->GetNumberOfCells();
4274 if (event->IsA()==AliESDEvent::Class()) AliAnalysisManager::GetAnalysisManager()->LoadBranch(
"EMCALCells.");
4276 AliInputEventHandler *fInputHandler=(AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
4277 if (!fInputHandler)
return 3;
4280 Int_t nCellCount[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
4281 for(
Int_t iCell=0; iCell<nCells; ++iCell) {
4282 Short_t cellId = cells->GetCellNumber(iCell);
4283 Double_t cellE = cells->GetCellAmplitude(cellId);
4284 Int_t sm = cellId / (24*48);
4285 if (cellE>0.1) ++nCellCount[sm];
4288 Bool_t fIsLedEvent = kFALSE;
4289 if (nCellCount[4] > 100) {
4290 fIsLedEvent = kTRUE;
4292 if ((runnumber>=146858) && (runnumber<=146860)) {
4293 if ((fInputHandler->IsEventSelected() & AliVEvent::kMB) && (nCellCount[3]>=21))
4294 fIsLedEvent = kTRUE;
4295 else if ((fInputHandler->IsEventSelected() & AliVEvent::kEMC1) && (nCellCount[3]>=35))
4296 fIsLedEvent = kTRUE;
4306 Int_t nClustersLayer0 =
event->GetNumberOfITSClusters(0);
4307 Int_t nClustersLayer1 =
event->GetNumberOfITSClusters(1);
4308 Int_t nTracklets =
event->GetMultiplicity()->GetNumberOfTracklets();
4313 if(event->IsA()==AliESDEvent::Class()){
4317 for(
Int_t i=0; i<nPileVert;i++){
4318 const AliESDVertex* pv= ((
AliESDEvent*)event)->GetPileupVertexSPD(i);
4319 Int_t nc2 = pv->GetNContributors();
4324 if (TMath::Abs(distZMax) < TMath::Abs(distZ) ){
4338 if(event->IsPileupFromSPD(3,0.8,3.,2.,5.) ){
4342 if (
fUtils->IsSPDClusterVsTrackletBG(event)){
4348 if(
fUtils->IsPileUpEvent(event) ){
4352 if (
fUtils->IsSPDClusterVsTrackletBG(event)){
4373 AliEventplane *EventPlane =
event->GetEventplane();
4386 AliInfo(
"Inside the GetWeightForCentralityFlattening function");
4389 if(!event || event->IsA()==AliESDEvent::Class()){
4392 AliCentrality *fESDCentrality=(AliCentrality*)esdEvent->GetCentrality();
4394 centrality = fESDCentrality->GetCentralityPercentile(
"V0M");
4397 }
else if(event->IsA()==AliAODEvent::Class()){
4400 if(aodEvent->GetHeader()){
4401 centrality = ((AliVAODHeader*)aodEvent->GetHeader())->
GetCentrality();
4407 Float_t GetValueForWeight = 1.;
4410 Bool_t CorrCentrLoop = kFALSE;
4416 CorrCentrLoop = kTRUE;
4420 CorrCentrLoop = kTRUE;
4422 CorrCentrLoop = kFALSE;
4425 if (CorrCentrLoop && GetValueForWeight != 0. && maximum !=0. && isfinite(GetValueForWeight) && isfinite(maximum) ){
4426 weightCentrality = maximum/GetValueForWeight;
4427 if (!isfinite(GetValueForWeight)) weightCentrality = 1.;
4428 if (!isfinite(weightCentrality)) weightCentrality = 1.;
4431 return weightCentrality;
4450 if (relativeErrorData < 0.2 && relativeErrorMC < 0.2 ){
4451 if (isfinite(valueMultData) && isfinite(valueMultMC) ){
4452 weightMult = valueMultData/valueMultMC;
4471 if(index < 0)
return 0;
4479 if (kCaseGen == 0)
return 1;
4484 if(!event || event->IsA()==AliESDEvent::Class()){
4485 mesonPt = ((TParticle*)mcEvent->Particle(index))->Pt();
4487 PDGCode = ((TParticle*)mcEvent->Particle(index))->GetPdgCode();
4488 }
else if(event->IsA()==AliAODEvent::Class()){
4489 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
event->FindListObject(AliAODMCParticle::StdBranchName()));
4490 if (AODMCTrackArray){
4491 AliAODMCParticle *aodMCParticle =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(index));
4492 mesonPt = aodMCParticle->Pt();
4494 PDGCode = aodMCParticle->GetPdgCode();
4500 Float_t functionResultMC = 1.;
4511 Float_t functionResultData = 1;
4523 if (PDGCode == 111 || PDGCode == 221){
4524 if (functionResultData != 0. && functionResultMC != 0. && isfinite(functionResultData) && isfinite(functionResultMC)){
4525 weight = functionResultData/functionResultMC;
4526 if ( kCaseGen == 3){
4527 if (PDGCode == 111){
4532 if (PDGCode == 221){
4538 if (!isfinite(functionResultData)) weight = 1.;
4539 if (!isfinite(weight)) weight = 1.;
4541 }
else if (PDGCode == 310 && functionResultMC != 0 && isfinite(functionResultMC)){
4542 weight = functionResultMC;
4558 printf(
" Gamma Conversion Cuts %s :: pPb Run doing Eta Shift of %f \n\n",(
GetCutNumber()).
Data(),-0.465);
4561 printf(
" Gamma Conversion Cuts %s :: Pbp Run doing Eta Shift of %f \n\n",(
GetCutNumber()).
Data(),0.465);
4564 else printf(
" Gamma Conversion Cuts %s :: Automatic Eta Shift requested but Period is not known -> No Shift \n\n",(
GetCutNumber()).
Data());
4576 AliError(Form(
"%s: fTriggerPatchInfo not available",GetName()));
4584 AliEMCALTriggerPatchInfo *patch;
4585 for (
Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
4587 if (patch->IsMainTrigger()) {
4604 if (event->IsA()==AliESDEvent::Class()){
4614 AliError(Form(
"%s: Could not retrieve calo triggers %s!", GetName(),
fCaloTriggersName.Data()));
4620 if (event->IsA()==AliESDEvent::Class()){
4652 AliEMCALTriggerPatchInfo *patch;
4654 for (
Int_t iPatch = 0; iPatch < nPatch; iPatch++) {
4659 if (patch->IsGammaHigh()){
4663 if (patch->IsGammaLow()){
4667 if (patch->IsJetHigh()){
4671 if (patch->IsJetLow()){
4675 if (patch->IsLevel0()){
4686 AliDebug(2,
"Patch summary: ");
4687 AliDebug(2, Form(
"Number of patches: %d", nPatch));
4688 AliDebug(2, Form(
"Level0: [%d]" ,nL0));
4689 AliDebug(2, Form(
"Jet: low[%d], high[%d]" ,nJ2, nJ1));
4690 AliDebug(2, Form(
"Gamma: low[%d], high[%d]" ,nG2, nG1));
4702 SETBIT(triggers,
kG1);
4704 SETBIT(triggers,
kG2);
4706 SETBIT(triggers,
kJ1);
4708 SETBIT(triggers,
kJ2);
4710 SETBIT(triggers,
kL0);
4729 TClonesArray *arr = 0;
4731 if (!sname.IsNull()) {
4732 arr =
dynamic_cast<TClonesArray*
>(
event->FindListObject(sname));
4734 AliWarning(Form(
"%s: Could not retrieve array with name %s!", GetName(), name));
4744 TString objname(arr->GetClass()->GetName());
4745 TClass cls(objname);
4746 if (!cls.InheritsFrom(clname)) {
4747 AliWarning(Form(
"%s: Objects of type %s in %s are not inherited from %s!",
4748 GetName(), cls.GetName(), name, clname));
4757 if (eventpos < 0)
return kFALSE;
4758 TParticle* particle = (TParticle *)mcEvent->Particle(eventpos);
4759 if (!particle)
return kFALSE;
4760 if (TMath::Abs(particle->GetPdgCode()) == 11 ){
4761 if (particle->GetMother(0) != -1){
4762 TParticle* particleMother = (TParticle *)mcEvent->Particle(particle->GetMother(0));
4763 if (particleMother){
4764 if (TMath::Abs(particleMother->GetPdgCode()) == 22)
4765 particle = particleMother;
4769 if (particle->GetMother(0) != -1){
4770 Double_t deltaX = particle->Vx() - prodVtxX;
4771 Double_t deltaY = particle->Vy() - prodVtxY;
4772 Double_t deltaZ = particle->Vz() - prodVtxZ;
4775 Double_t realRadius3D = TMath::Sqrt(deltaX*deltaX+deltaY*deltaY+deltaZ*deltaZ);
4778 Bool_t dalitzCand = kFALSE;
4780 TParticle* firstmother = (TParticle *)mcEvent->Particle(particle->GetMother(0));
4781 if (!firstmother)
return kFALSE;
4782 Int_t pdgCodeFirstMother = firstmother->GetPdgCode();
4783 Bool_t intDecay = kFALSE;
4784 if ( pdgCodeFirstMother == 111 || pdgCodeFirstMother == 221 ) intDecay = kTRUE;
4785 if ( intDecay && TMath::Abs(particle->GetPdgCode()) == 11 ){
4790 Long_t source = particle->GetMother(0);
4791 Bool_t foundExcludedPart = kFALSE;
4792 Bool_t foundShower = kFALSE;
4793 Int_t pdgCodeMotherPrev = 0;
4794 Int_t pdgCodeMotherPPrevMother = 0;
4802 TParticle* mother = (TParticle *)mcEvent->Particle(source);
4803 source = mother->GetMother(0);
4805 Int_t pdgCodeMother = mother->GetPdgCode();
4807 if (pdgCodeMother == pdgCodeMotherPrev && pdgCodeMother == pdgCodeMotherPPrevMother) depth = 20;
4808 if (TMath::Abs(pdgCodeMother) == 11 && TMath::Abs(pdgCodeMotherPrev) == 22 && TMath::Abs(pdgCodeMotherPPrevMother) == 11 ){
4809 foundShower = kTRUE;
4812 if (TMath::Abs(pdgCodeMother) == 22 && TMath::Abs(pdgCodeMotherPrev) == 11 && TMath::Abs(pdgCodeMotherPPrevMother) == 22 ){
4813 foundShower = kTRUE;
4825 if (TMath::Abs(pdgCodeMother) == 310 || TMath::Abs(pdgCodeMother) == 130 || TMath::Abs(pdgCodeMother) == 321 ||
4826 TMath::Abs(pdgCodeMother) == 3122 || TMath::Abs(pdgCodeMother) == 3212 || TMath::Abs(pdgCodeMother) == 3222 ||
4827 TMath::Abs(pdgCodeMother) == 3112 || TMath::Abs(pdgCodeMother) == 3322 || TMath::Abs(pdgCodeMother) == 3312
4829 foundExcludedPart = kTRUE;
4832 pdgCodeMotherPPrevMother = pdgCodeMotherPrev;
4833 pdgCodeMotherPrev = pdgCodeMother;
4834 if (source == -1) depth = 20;
4840 if (foundExcludedPart){
4846 }
else if (foundShower){
4861 TClonesArray *AODMCTrackArray =
dynamic_cast<TClonesArray*
>(
event->FindListObject(AliAODMCParticle::StdBranchName()));
4862 if (AODMCTrackArray == NULL)
return kFALSE;
4863 AliAODMCParticle* currentParticle = AODMCParticle;
4864 if (TMath::Abs(currentParticle->GetPdgCode()) == 11 ){
4865 if (currentParticle->GetMother() != -1){
4866 AliAODMCParticle* particleMother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(currentParticle->GetMother()));
4867 if (particleMother){
4868 if (TMath::Abs(particleMother->GetPdgCode()) == 22)
4869 currentParticle = particleMother;
4873 if (currentParticle->GetMother() > -1){
4874 Double_t deltaX = currentParticle->Xv() - prodVtxX;
4875 Double_t deltaY = currentParticle->Yv() - prodVtxY;
4876 Double_t deltaZ = currentParticle->Zv() - prodVtxZ;
4879 Double_t realRadius3D = TMath::Sqrt(deltaX*deltaX+deltaY*deltaY+deltaZ*deltaZ);
4881 Bool_t dalitzCand = kFALSE;
4883 AliAODMCParticle* firstmother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(currentParticle->GetMother()));
4884 if (!firstmother)
return kFALSE;
4885 Int_t pdgCodeFirstMother = firstmother->GetPdgCode();
4886 Bool_t intDecay = kFALSE;
4887 if ( pdgCodeFirstMother == 111 || pdgCodeFirstMother == 221 ) intDecay = kTRUE;
4888 if ( intDecay && TMath::Abs(currentParticle->GetPdgCode()) == 11 ){
4893 Long_t source = currentParticle->GetMother();
4894 Bool_t foundExcludedPart = kFALSE;
4895 Bool_t foundShower = kFALSE;
4896 Int_t pdgCodeMotherPrev = 0;
4897 Int_t pdgCodeMotherPPrevMother = 0;
4905 AliAODMCParticle* mother =
static_cast<AliAODMCParticle*
>(AODMCTrackArray->At(source));
4906 source = mother->GetMother();
4908 Int_t pdgCodeMother = mother->GetPdgCode();
4910 if (pdgCodeMother == pdgCodeMotherPrev && pdgCodeMother == pdgCodeMotherPPrevMother) depth = 20;
4911 if (TMath::Abs(pdgCodeMother) == 11 && TMath::Abs(pdgCodeMotherPrev) == 22 && TMath::Abs(pdgCodeMotherPPrevMother) == 11 ){
4912 foundShower = kTRUE;
4915 if (TMath::Abs(pdgCodeMother) == 22 && TMath::Abs(pdgCodeMotherPrev) == 11 && TMath::Abs(pdgCodeMotherPPrevMother) == 22 ){
4916 foundShower = kTRUE;
4928 if (TMath::Abs(pdgCodeMother) == 310 || TMath::Abs(pdgCodeMother) == 130 || TMath::Abs(pdgCodeMother) == 321 ||
4929 TMath::Abs(pdgCodeMother) == 3122 || TMath::Abs(pdgCodeMother) == 3212 || TMath::Abs(pdgCodeMother) == 3222 ||
4930 TMath::Abs(pdgCodeMother) == 3112 || TMath::Abs(pdgCodeMother) == 3322 || TMath::Abs(pdgCodeMother) == 3312)
4932 foundExcludedPart = kTRUE;
4935 pdgCodeMotherPPrevMother = pdgCodeMotherPrev;
4936 pdgCodeMotherPrev = pdgCodeMother;
4937 if (source == -1) depth = 20;
4943 if (foundExcludedPart){
4949 }
else if (foundShower){
4964 if (particle != NULL && mcEvent != NULL){
4965 Int_t pdgSecondary = 0;
4969 Long_t motherID = particle->GetMother(0);
4970 Long_t grandMotherID = -1;
4974 grandMotherID = mcEvent->Particle(motherID)->GetMother(0);
4976 if (grandMotherID > -1){
4978 pdgSecondary = mcEvent->Particle(grandMotherID)->GetPdgCode();
4985 Long_t motherID = particle->GetMother(0);
4986 Long_t grandMotherID = -1;
4987 Long_t greatGrandMotherID = -1;
4991 grandMotherID = mcEvent->Particle(motherID)->GetMother(0);
4993 if (grandMotherID > -1){
4995 greatGrandMotherID = mcEvent->Particle(grandMotherID)->GetMother(0);
4997 if (greatGrandMotherID > -1){
4999 pdgSecondary = mcEvent->Particle(greatGrandMotherID)->GetPdgCode();
5005 if (TMath::Abs(pdgSecondary) == 3122 )
5008 else if ( TMath::Abs(pdgSecondary) == 310 )
5011 else if ( TMath::Abs(pdgSecondary) == 130 )
5014 else if ( TMath::Abs(pdgSecondary) == 221 )
5017 else if ( TMath::Abs(pdgSecondary) != 0 )
5027 if (particle != NULL && aodmcArray != NULL){
5028 Int_t pdgSecondary = 0;
5032 Long_t motherID = particle->GetMother();
5033 Long_t grandMotherID = -1;
5037 grandMotherID = ((AliAODMCParticle*)aodmcArray->At(motherID))->GetMother();
5039 if (grandMotherID > -1){
5041 pdgSecondary = ((AliAODMCParticle*)aodmcArray->At(grandMotherID))->GetPdgCode();
5048 Long_t motherID = particle->GetMother();
5049 Long_t grandMotherID = -1;
5050 Long_t greatGrandMotherID = -1;