#define ALIVERTEXINGHFUTILS_H
-/* $Id: $ */
+/* $Id$ */
///////////////////////////////////////////////////////////////////
// //
// Class with functions useful for different D2H analyses //
// - event plane resolution //
// - <pt> calculation with side band subtraction //
-// - tracklet multiplcity calculation //
+// - tracklet multiplicity calculation //
// Origin: F.Prino, Torino, prino@to.infn.it //
// //
///////////////////////////////////////////////////////////////////
#include "TObject.h"
-#include "TH1F.h"
+#include "AliAODTrack.h"
+#include "AliAODRecoDecay.h"
+#include "AliAODRecoDecayHF.h"
+#include "AliAODRecoCascadeHF.h"
+
+class AliStack;
+class AliAODMCParticle;
+class AliAODMCHeader;
+class AliGenEventHeader;
+class AliAODEvent;
+class TProfile;
+class TParticle;
+class TClonesArray;
+class TH1F;
+class TH2F;
+class TF1;
class AliVertexingHFUtils : public TObject{
public:
AliVertexingHFUtils(Int_t k);
virtual ~AliVertexingHFUtils() {};
+ // Significance calculator
+ static void ComputeSignificance(Double_t signal, Double_t errsignal, Double_t background, Double_t errbackground, Double_t &significance,Double_t &errsignificance);
+
// Functions for Event plane resolution
void SetK(Int_t k){fK=k;}
void SetSubEvResol(Double_t res){fSubRes=res;}
static Double_t GetFullEvResol(const TH1F* hSubEvCorr, Int_t k=1);
static Double_t GetFullEvResolLowLim(const TH1F* hSubEvCorr, Int_t k=1);
static Double_t GetFullEvResolHighLim(const TH1F* hSubEvCorr, Int_t k=1);
-
+ static TString GetGenerator(Int_t label, AliAODMCHeader* header);
+ Bool_t IsTrackInjected(AliAODTrack *track,AliAODMCHeader *header,TClonesArray *arrayMC);
+ void GetTrackPrimaryGenerator(AliAODTrack *track,AliAODMCHeader *header,TClonesArray *arrayMC,TString &nameGen);
+ Bool_t IsCandidateInjected(AliAODRecoDecayHF *cand, AliAODMCHeader *header,TClonesArray *arrayMC);
+ Bool_t HasCascadeCandidateAnyDaughInjected(AliAODRecoCascadeHF *cand, AliAODMCHeader *header,TClonesArray *arrayMC);
// Functions for tracklet multiplcity calculation
void SetEtaRangeForTracklets(Double_t mineta, Double_t maxeta){
fMinEtaForTracklets=mineta;
Int_t GetNumberOfTrackletsInEtaRange(AliAODEvent* ev) const {
return GetNumberOfTrackletsInEtaRange(ev,fMinEtaForTracklets,fMaxEtaForTracklets);
}
+ static Int_t GetGeneratedMultiplicityInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta);
+ static Int_t GetGeneratedPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta);
+ static Int_t GetGeneratedPhysicalPrimariesInEtaRange(TClonesArray* arrayMC, Double_t mineta, Double_t maxeta);
+
+ // Utilities for V0 multiplicity checks
+ static Double_t GetVZEROAEqualizedMultiplicity(AliAODEvent* ev);
+ static Double_t GetVZEROCEqualizedMultiplicity(AliAODEvent* ev);
+
+ // Functions for computing average pt
+ static void AveragePt(Float_t& averagePt, Float_t& errorPt, Float_t ptmin, Float_t ptmax, TH2F* hMassD, Float_t massFromFit, Float_t sigmaFromFit, TF1* funcB2, Float_t sigmaRangeForSig=2.5, Float_t sigmaRangeForBkg=4.5, Float_t minMass=0., Float_t maxMass=3., Int_t rebin=1);
+
+ // Functions for processing trigger information
+ static Bool_t CheckT0TriggerFired(AliAODEvent* aodEv);
+
+ // Functions for computing true impact parameter of D meson
+ static Double_t GetTrueImpactParameterDzero(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp);
+ static Double_t GetTrueImpactParameterDplus(AliAODMCHeader *mcHeader, TClonesArray* arrayMC, AliAODMCParticle *partDp);
+
+ static Double_t GetCorrectedNtracklets(TProfile* estimatorAvg, Double_t uncorrectedNacc, Double_t vtxZ, Double_t refMult);
+
+ static Int_t CheckOrigin(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Bool_t searchUpToQuark=kTRUE);
+ static Int_t CheckOrigin(AliStack* stack, TParticle *mcPart, Bool_t searchUpToQuark=kTRUE);
+ static Int_t CheckD0Decay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
+ static Int_t CheckD0Decay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
+ static Int_t CheckDplusDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
+ static Int_t CheckDplusDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
+ static Int_t CheckDsDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
+ static Int_t CheckDsDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
+ static Int_t CheckDstarDecay(AliStack* stack, Int_t label, Int_t* arrayDauLab);
+ static Int_t CheckDstarDecay(TClonesArray* arrayMC, AliAODMCParticle *mcPart, Int_t* arrayDauLab);
private: