#ifndef ALITRACKLETTASKUNI_H #define ALITRACKLETTASKUNI_H /////////////////////////////////////////////////////////////////////////// // Class AliTrackletTask // // Analysis task to study performance of tracklet reconstruction // // algorithm and combinatorial background // // Author: M. Nicassio (INFN Bari) // // Contact: Maria.Nicassio@ba.infn.it, Domenico.Elia@ba.infn.it // /////////////////////////////////////////////////////////////////////////// class TH1F; class TH2F; class AliESDEvent; class TList; class TNtuple; class AliMCParticle; class AliITSMultRecBg; class AliITSsegmentationSPD; #include "AliAnalysisTaskSE.h" #include "AliTriggerAnalysis.h" class AliTrackletTaskUni : public AliAnalysisTaskSE { public: enum {kData,kBgInj,kBgRot,kBgMix,kMC}; // enum { // define here id's of the standard histos in corresponding TObjArray* fHistosTr... kHEtaZvDist, // 3 d sparse histo with dist (uncut) vs zv vs eta kHEtaZvDPhiS, // 3 d sparse histo with dphiS (uncut) vs zv vs eta kHEtaZvCut, // zv vs eta with strict cut on tracklets applied (dist<1 or |dPhi|0? s:1.;} void SetRemoveOverlaps(Bool_t w=kFALSE) {fRemoveOverlaps = w;} void SetScaleMCV0(Float_t s=1.0) {fMCV0Scale = s;} // void SetEtaCut(Float_t etaCut) {fEtaMax = TMath::Abs(etaCut); fEtaMin= -fEtaMax;} void SetEtaMin(Float_t etaMin) {fEtaMin = etaMin;} void SetEtaMax(Float_t etaMax) {fEtaMax = etaMax;} void SetZVertexMin(Float_t z) {fZVertexMin = z;} void SetZVertexMax(Float_t z) {fZVertexMax = z;} void SetMultCutMin(Int_t n=0) {fMultCutMin = n;} void SetMultCutMax(Int_t n=99999) {fMultCutMax = n;} // Bool_t GetDoNormalReco() const {return fDoNormalReco;} Bool_t GetDoInjection() const {return fDoInjection;} Bool_t GetDoRotation() const {return fDoRotation;} Bool_t GetDoMixing() const {return fDoMixing;} // void SetDoNormalReco(Bool_t v=kTRUE) {fDoNormalReco = v;} void SetDoInjection(Bool_t v=kTRUE) {fDoInjection = v;} void SetDoRotation(Bool_t v=kTRUE) {fDoRotation = v;} void SetDoMixing(Bool_t v=kTRUE) {fDoMixing = v;} // void SetDontMerge(Bool_t v=kTRUE) {fDontMerge = v;} /* void SetTrigger(AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; } void SetMCCentralityBin(MCCentralityBin mccentrbin) { fMCCentralityBin = mccentrbin;} void SetCentralityLowLim(Float_t centrlowlim) { fCentrLowLim = centrlowlim;} void SetCentralityUpLim(Float_t centruplim) { fCentrUpLim = centruplim;} void SetCentralityEst(TString centrest) { fCentrEst = centrest;} */ // protected: void InitMultReco(); Bool_t HaveCommonParent(const float* clLabs0,const float* clLabs1); void FillHistos(Int_t type, const AliMultiplicity* mlt); void FillMCPrimaries(TH2F* hetaz); void FillSpecies(Int_t primsec, Int_t id, Double_t dist); Int_t GetPdgBin(Int_t pdgCode); void CheckReconstructables(); // protected: TList* fOutput; // output list send on output slot 1 // Bool_t fDoNormalReco; // do normal reco Bool_t fDoInjection; // do injection Bool_t fDoRotation; // do rotation Bool_t fDoMixing; // do mixing // Bool_t fUseMC; // flag of MC processing Bool_t fCheckReconstructables; // request check // TObjArray* fHistosTrData; //! all tracklets in data TObjArray* fHistosTrInj; //! injected TObjArray* fHistosTrRot; //! rotated TObjArray* fHistosTrMix; //! mixed // TObjArray* fHistosTrPrim; //! primary TObjArray* fHistosTrSec; //! secondary TObjArray* fHistosTrComb; //! combinatorials TObjArray* fHistosTrCombU; //! combinatorials uncorrelated // TObjArray* fHistosTrRcblPrim; //! Primary Reconstructable TObjArray* fHistosTrRcblSec; //! Secondary Reconstructable TObjArray* fHistosCustom; //! custom histos // // Settings for the reconstruction // tracklet reco settings Float_t fEtaMin; // histos filled only for this eta range Float_t fEtaMax; // histos filled only for this eta range Float_t fZVertexMin; // min Z vtx to process Float_t fZVertexMax; // max Z vtx to process Int_t fMultCutMin; // min mult in ESD to process? Int_t fMultCutMax; // max mult in ESD to process? Float_t fMCV0Scale; // scaling factor for V0 in MC // Bool_t fScaleDTBySin2T; // request dTheta scaling by 1/sin^2(theta) Bool_t fCutOnDThetaX; // if true, apart from NStdDev cut apply also the cut on dThetaX Float_t fNStdDev; // cut on weighted distance Float_t fDPhiWindow; // max dPhi Float_t fDThetaWindow; // max dTheta Float_t fDPhiShift; // mean bend Float_t fPhiOverlapCut; // overlaps cut in phi Float_t fZetaOverlap; // overlaps cut in Z Float_t fPhiRot; // rotate L1 wrt L2 Float_t fInjScale; // scaling factor for injection Bool_t fRemoveOverlaps; // request overlaps removal // AliITSMultRecBg *fMultReco; //! mult.reco object TTree* fRPTree; //! tree of recpoints TTree* fRPTreeMix; //! tree of recpoints for mixing AliStack* fStack; //! MC stack AliMCEvent* fMCevent; //! MC Event Float_t fESDVtx[3]; // ESD vertex // /* AliTriggerAnalysis::Trigger fTrigger; // requested trigger MCCentralityBin fMCCentralityBin; // to select MC centrality bin in which corrections are calculated Float_t fCentrLowLim; // to select centrality bin on data Float_t fCentrUpLim; // to select centrality bin on data TString fCentrEst; // to select centrality estimator */ Bool_t fDontMerge; // no merging requested static const char* fgkPDGNames[]; //!pdg names static const Int_t fgkPDGCodes[]; //!pdg codes // private: AliTrackletTaskUni(const AliTrackletTaskUni&); // not implemented AliTrackletTaskUni& operator=(const AliTrackletTaskUni&); // not implemented ClassDef(AliTrackletTaskUni, 1); }; #endif