#include "AliESDEvent.h"
#include "AliMCEvent.h"
#include "AliMCParticle.h"
+#include "AliMultiplicity.h"
#include "AliPID.h"
#include "AliPIDResponse.h"
#include "AliVParticle.h"
#include "AliHFEV0cuts.h"
#include "AliHFEtrdPIDqa.h"
-
ClassImp(AliHFEpidQA)
//__________________________________________
fOutput(NULL),
fESDpid(NULL),
fNNref(NULL),
- fTRDTotalChargeInSlice0(kFALSE)
+ fTRDTotalChargeInSlice0(kFALSE),
+ fIsPbPb(kFALSE),
+ fIsppMultiBin(kFALSE)
{
//
// Default constructor
fOutput(NULL),
fESDpid(NULL),
fNNref(NULL),
- fTRDTotalChargeInSlice0(ref.fTRDTotalChargeInSlice0)
+ fTRDTotalChargeInSlice0(ref.fTRDTotalChargeInSlice0),
+ fIsPbPb(kFALSE),
+ fIsppMultiBin(kFALSE)
{
//
// Copy constructor
// Now we can do studies on the PID itself
// For TRD use the TRD PID QA object
+ Int_t centrality=-1;
+ if(fIsPbPb) centrality=GetCentrality(fEvent);
+ if(fIsppMultiBin) centrality=GetMultiplicityITS(fEvent);
+ fTRDpidQA->SetCentralityBin(centrality);
fTRDpidQA->ProcessTracks(cleanElectrons, AliPID::kElectron);
fTRDpidQA->ProcessTracks(pionsK0, AliPID::kPion);
fTRDpidQA->ProcessTracks(pionsL, AliPID::kPion);
}
-//__________________________________________________________________________
+//___________________________________________________
+Int_t AliHFEpidQA::GetCentrality(AliVEvent* const fInputEvent){
+ //
+ // Recover the centrality of the event from ESD or AOD
+ //
+ Int_t bin = -1;
+
+ if(fIsPbPb)
+ {
+ // Centrality
+ AliCentrality *centrality = fInputEvent->GetCentrality();
+ Float_t fCentralityFtemp = -1;
+ fCentralityFtemp = centrality->GetCentralityPercentile("V0M");
+ Float_t centralityLimits[12] = {0.,5.,10., 20., 30., 40., 50., 60.,70.,80., 90., 100.};
+ for(Int_t ibin = 0; ibin < 11; ibin++){
+ if(fCentralityFtemp >= centralityLimits[ibin] && fCentralityFtemp < centralityLimits[ibin+1]){
+ bin = ibin;
+ break;
+ }
+ }
+ }
+ AliDebug(2, Form("Centrality class %d\n", bin));
+
+
+ return bin;
+
+}
+
+//___________________________________________________
+Int_t AliHFEpidQA::GetMultiplicityITS(AliVEvent* const fInputEvent)
+{
+ //
+ // Definition of the Multiplicity according to the JPSI group (F. Kramer)
+ //
+ Int_t nTracklets = 0;
+ Int_t nAcc = 0;
+ Double_t etaRange = 1.6;
+ Int_t bin = -1;
+
+ nTracklets = ((AliESDEvent*) fInputEvent)->GetMultiplicity()->GetNumberOfTracklets();
+ for (Int_t nn = 0; nn < nTracklets; nn++) {
+ Double_t eta = ((AliESDEvent*)fInputEvent)->GetMultiplicity()->GetEta(nn);
+ if (TMath::Abs(eta) < etaRange) nAcc++;
+ }
+
+ Int_t itsMultiplicity = nAcc;
+
+ Int_t multiplicityLimits[8] = {0, 1, 9, 17, 25, 36, 60, 500};
+ for(Int_t ibin = 0; ibin < 7; ibin++){
+ if(itsMultiplicity >= multiplicityLimits[ibin] && itsMultiplicity < multiplicityLimits[ibin + 1]){
+ bin = ibin;
+ break;
+ }
+ }
+
+ return bin;
+
+}