#include <TList.h>
#include <TTree.h>
#include <TStopwatch.h>
+#include "TRandom.h"
#include "AliLog.h"
#include "AliEventplane.h"
fUseCentrality(kFALSE),
fCentralityType("QUALITY"),
fUseAOD049CentralityPatch(kFALSE),
+ fUseCentralityPatchPbPb2011(0),
fContinuousMix(kTRUE),
fNMix(0),
fMaxDiffMult(10),
fUseCentrality(kFALSE),
fCentralityType("QUALITY"),
fUseAOD049CentralityPatch(kFALSE),
+ fUseCentralityPatchPbPb2011(0),
fContinuousMix(kTRUE),
fNMix(0),
fMaxDiffMult(10),
fUseCentrality(copy.fUseCentrality),
fCentralityType(copy.fCentralityType),
fUseAOD049CentralityPatch(copy.fUseAOD049CentralityPatch),
+ fUseCentralityPatchPbPb2011(copy.fUseCentralityPatchPbPb2011),
fContinuousMix(copy.fContinuousMix),
fNMix(copy.fNMix),
fMaxDiffMult(copy.fMaxDiffMult),
fUseCentrality = copy.fUseCentrality;
fCentralityType = copy.fCentralityType;
fUseAOD049CentralityPatch = copy.fUseAOD049CentralityPatch;
+ fUseCentralityPatchPbPb2011 = copy.fUseCentralityPatchPbPb2011;
fContinuousMix = copy.fContinuousMix;
fNMix = copy.fNMix;
fMaxDiffMult = copy.fMaxDiffMult;
//
if (fUseCentrality) {
-
- if ((!fUseMC) && (!isESD) && (fUseAOD049CentralityPatch)) {
- return ApplyCentralityPatchAOD049();
- } else {
- AliCentrality *centrality = fInputEvent->GetCentrality();
+ if ((!fUseMC) && (fUseCentralityPatchPbPb2011)) {
+ return ApplyCentralityPatchPbPb2011();//
+ }
+ if ((!fUseMC) && (!isESD) && (fUseAOD049CentralityPatch)) {
+ return ApplyCentralityPatchAOD049();
+ } else {
+ AliCentrality *centrality = fInputEvent->GetCentrality();
if (!centrality) {
- AliError("Cannot compute centrality!");
- return -1.0;
+ AliError("Cannot compute centrality!");
+ return -1.0;
}
return centrality->GetCentralityPercentile(fCentralityType.Data());
- }
+ }
} else {
if (!fCentralityType.CompareTo("TRACKS"))
return fInputEvent->GetNumberOfTracks();
AliError(Form("String '%s' does not define a possible multiplicity/centrality computation", type.Data()));
return -1.0;
}
-
- return 1E20;
}
//__________________________________________________________________________________________________
}
}
+//---------------------------------------------------------------------
+Double_t AliRsnMiniAnalysisTask::ApplyCentralityPatchPbPb2011(){
+ //This part rejects randomly events such that the centrality gets flat for LHC11h Pb-Pb data
+ //for 0-5% and 10-20% centrality bin
+
+ if (fCentralityType!="V0M") {
+ AliWarning("Wrong value (not centrality from V0).");
+ return -999.0;
+ }
+
+ AliCentrality *centrality = fInputEvent->GetCentrality();
+ if (!centrality) {
+ AliWarning("Cannot get centrality from AOD event.");
+ return -999.0;
+ }
+
+ Double_t cent = (Float_t)(centrality->GetCentralityPercentile("V0M"));
+ Double_t rnd_hc = -1., testf = 0.0, ff = 0, N1 = -1., N2 = -1.;
+
+ if(fUseCentralityPatchPbPb2011==510){
+ N1 = 1.9404e+06;
+ N2 = 1.56435e+06; //N2 is the reference
+ ff = 5.04167e+06 - 1.49885e+06*cent + 2.35998e+05*cent*cent -1.22873e+04*cent*cent*cent;
+ } else {
+ if(fUseCentralityPatchPbPb2011==1020){
+ N2 = 2.0e+05; //N2 is the reference
+ N1 = 3.7e+05;
+ ff = -1.73979e+06 - 3.05316e+06*cent + 1.05517e+06*cent*cent - 133205*cent*cent*cent + 8187.45*cent*cent*cent*cent - 247.875*cent*cent*cent*cent*cent + 2.9676*cent*cent*cent*cent*cent*cent;
+ } else {
+ AliError(Form("Patch for the requested centrality (%i) is not available", fUseCentralityPatchPbPb2011));
+ return -999.0;
+ }
+ }
+ testf = ( N2 + (N1-ff) ) / N1;
+ rnd_hc = gRandom->Rndm();
+
+ //AliDebugClass(1, Form("Flat Centrality %d", fUseCentralityPatchPbPb2011));
+ if (rnd_hc < 0 || rnd_hc > 1 )
+ {
+ AliWarning("Wrong Random number generated");
+ return -999.0;
+ }
+
+ if (rnd_hc < testf)
+ return cent;
+ else
+ return -999.0;
+}
//---------------------------------------------------------------------
Double_t AliRsnMiniAnalysisTask::ApplyCentralityPatchAOD049()
{