]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/RESONANCES/AliRsnMiniAnalysisTask.cxx
Fix for coverity 24399, 24400, 24401
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnMiniAnalysisTask.cxx
index 471deb3798aeb58ddc1a18cdfadc893a060e7384..9ae2d8c2313dc1768e4eff18d161cdf34b52a37e 100644 (file)
@@ -16,6 +16,7 @@
 #include <TList.h>
 #include <TTree.h>
 #include <TStopwatch.h>
+#include "TRandom.h"
 
 #include "AliLog.h"
 #include "AliEventplane.h"
@@ -49,6 +50,7 @@ AliRsnMiniAnalysisTask::AliRsnMiniAnalysisTask() :
    fUseCentrality(kFALSE),
    fCentralityType("QUALITY"),
    fUseAOD049CentralityPatch(kFALSE),
+   fUseCentralityPatchPbPb2011(0),
    fContinuousMix(kTRUE),
    fNMix(0),
    fMaxDiffMult(10),
@@ -93,6 +95,7 @@ AliRsnMiniAnalysisTask::AliRsnMiniAnalysisTask(const char *name, Bool_t useMC) :
    fUseCentrality(kFALSE),
    fCentralityType("QUALITY"),
    fUseAOD049CentralityPatch(kFALSE),
+  fUseCentralityPatchPbPb2011(0),
    fContinuousMix(kTRUE),
    fNMix(0),
    fMaxDiffMult(10),
@@ -142,6 +145,7 @@ AliRsnMiniAnalysisTask::AliRsnMiniAnalysisTask(const AliRsnMiniAnalysisTask &cop
    fUseCentrality(copy.fUseCentrality),
    fCentralityType(copy.fCentralityType),
    fUseAOD049CentralityPatch(copy.fUseAOD049CentralityPatch),
+   fUseCentralityPatchPbPb2011(copy.fUseCentralityPatchPbPb2011),
    fContinuousMix(copy.fContinuousMix),
    fNMix(copy.fNMix),
    fMaxDiffMult(copy.fMaxDiffMult),
@@ -197,6 +201,7 @@ AliRsnMiniAnalysisTask &AliRsnMiniAnalysisTask::operator=(const AliRsnMiniAnalys
    fUseCentrality = copy.fUseCentrality;
    fCentralityType = copy.fCentralityType;
    fUseAOD049CentralityPatch = copy.fUseAOD049CentralityPatch;
+   fUseCentralityPatchPbPb2011 = copy.fUseCentralityPatchPbPb2011;
    fContinuousMix = copy.fContinuousMix;
    fNMix = copy.fNMix;
    fMaxDiffMult = copy.fMaxDiffMult;
@@ -822,17 +827,19 @@ Double_t AliRsnMiniAnalysisTask::ComputeCentrality(Bool_t isESD)
 //
 
    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();
@@ -909,8 +916,6 @@ Double_t AliRsnMiniAnalysisTask::ComputeMultiplicity(Bool_t isESD,TString type)
       AliError(Form("String '%s' does not define a possible multiplicity/centrality computation", type.Data()));
       return -1.0;
    }
-
-   return 1E20;
 }
 
 //__________________________________________________________________________________________________
@@ -1187,7 +1192,55 @@ Bool_t AliRsnMiniAnalysisTask::EventsMatch(AliRsnMiniEvent *event1, AliRsnMiniEv
    }
 }
 
+//---------------------------------------------------------------------
+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()
 {