X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG3%2Fdielectron%2FAliDielectron.h;h=a33d3dc49c826c936bed4fc9e2b8c2978097d48d;hb=f12dabf047497f243db3d7b57775f2f2b639d2ae;hp=c3c625038b5dc0c7a621ce8a4aaa87b275b3e65d;hpb=a655b7167eb96a004f73734312a41af624c76379;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG3/dielectron/AliDielectron.h b/PWG3/dielectron/AliDielectron.h index c3c625038b5..a33d3dc49c8 100644 --- a/PWG3/dielectron/AliDielectron.h +++ b/PWG3/dielectron/AliDielectron.h @@ -23,19 +23,23 @@ #include #include "AliDielectronHistos.h" -#include "AliDielectronPair.h" class AliVEvent; class THashList; class AliDielectronCF; +class AliDielectronDebugTree; +class AliDielectronTrackRotator; +class AliDielectronPair; //________________________________________________________________ class AliDielectron : public TNamed { public: - enum ParticleValues { kPx=0, kPy, kPz, kPt, kP, kXv, kYv, kZv, kOneOverPt, - kPhi, kTheta, kE, kM, kEta, kY, kCharge, kNParticleValues }; - enum PairValues { kChi2NDF=kNParticleValues, kDecayLength, kR, kOpeningAngle, kMerr, kNPairValues }; + enum EPairType { kEv1PP=0, kEv1PM, kEv1MM, + kEv1PEv2P, kEv1MEv2P, kEv2PP, + kEv1PEv2M, kEv1MEv2M, kEv2PM, + kEv2MM, kEv1PMRot }; + enum ELegType { kEv1P, kEv1M, kEv2P, kEv2M }; AliDielectron(); AliDielectron(const char* name, const char* title); @@ -49,12 +53,19 @@ public: const AliAnalysisFilter& GetTrackFilter() const { return fTrackFilter; } const AliAnalysisFilter& GetPairFilter() const { return fPairFilter; } - AliAnalysisFilter& GetEventFilter() { return fEventFilter; } - AliAnalysisFilter& GetTrackFilter() { return fTrackFilter; } - AliAnalysisFilter& GetPairFilter() { return fPairFilter; } - - void SetMotherPdg( Int_t pdgMother ) { fPdgMother=pdgMother; } + AliAnalysisFilter& GetEventFilter() { return fEventFilter; } + AliAnalysisFilter& GetTrackFilter() { return fTrackFilter; } + AliAnalysisFilter& GetPairFilter() { return fPairFilter; } + AliAnalysisFilter& GetPairPreFilter() { return fPairPreFilter; } + AliAnalysisFilter& GetPairPreFilterLegs() { return fPairPreFilterLegs; } + void SetMotherPdg( Int_t pdgMother ) { fPdgMother=pdgMother; } + void SetLegPdg(Int_t pdgLeg1, Int_t pdgLeg2) { fPdgLeg1=pdgLeg1; fPdgLeg2=pdgLeg2; } + Int_t GetMotherPdg() const { return fPdgMother; } + Int_t GetLeg1Pdg() const { return fPdgLeg1; } + Int_t GetLeg2Pdg() const { return fPdgLeg2; } + + void SetNoPairing(Bool_t noPairing=kTRUE) { fNoPairing=noPairing; } const TObjArray* GetTrackArray(Int_t i) const {return (i>=0&&i<4)?&fTracks[i]:0;} const TObjArray* GetPairArray(Int_t i) const {return (i>=0&&i<10)? static_cast(fPairCandidates->UncheckedAt(i)):0;} @@ -65,26 +76,47 @@ public: const THashList * GetHistogramList() const { return fHistos?fHistos->GetHistogramList():0x0; } Bool_t HasCandidates() const { return GetPairArray(1)?GetPairArray(1)->GetEntriesFast()>0:0; } - + Bool_t HasCandidatesLikeSign() const { + return (GetPairArray(0)&&GetPairArray(2)) ? (GetPairArray(0)->GetEntriesFast()>0 || GetPairArray(2)->GetEntriesFast()>0) : 0; + } + void SetCFManagerPair(AliDielectronCF * const cf) { fCfManagerPair=cf; } AliDielectronCF* GetCFManagerPair() const { return fCfManagerPair; } + + void SetPreFilterUnlikeOnly(Bool_t setValue=kTRUE){fPreFilterUnlikeOnly=setValue;}; + + void SetTrackRotator(AliDielectronTrackRotator * const rot) { fTrackRotator=rot; } + AliDielectronTrackRotator* GetTrackRotator() const { return fTrackRotator; } + + void SetHasMC(Bool_t hasMC) { fHasMC = hasMC; } + Bool_t GetHasMC() const { return fHasMC; } + + void SetDebugTree(AliDielectronDebugTree * const tree) { fDebugTree=tree; } static const char* TrackClassName(Int_t i) { return (i>=0&&i<4)?fgkTrackClassNames[i]:""; } - static const char* PairClassName(Int_t i) { return (i>=0&&i<10)?fgkPairClassNames[i]:""; } + static const char* PairClassName(Int_t i) { return (i>=0&&i<11)?fgkPairClassNames[i]:""; } + + void SaveDebugTree(); private: - AliAnalysisFilter fEventFilter; // Event cuts - AliAnalysisFilter fTrackFilter; // leg cuts - AliAnalysisFilter fPairFilter; // pair cuts + AliAnalysisFilter fEventFilter; // Event cuts + AliAnalysisFilter fTrackFilter; // leg cuts + AliAnalysisFilter fPairPreFilter; // pair prefilter cuts + AliAnalysisFilter fPairPreFilterLegs; // Leg filter after the pair prefilter cuts + AliAnalysisFilter fPairFilter; // pair cuts Int_t fPdgMother; // pdg code of mother tracks - + Int_t fPdgLeg1; // pdg code leg1 + Int_t fPdgLeg2; // pdg code leg2 + + Bool_t fNoPairing; // if to skip pairing, can be used for track QA only + AliDielectronHistos *fHistos; // Histogram manager // Streaming and merging should be handled // by the analysis framework - + TObjArray fTracks[4]; //! Selected track candidates // 0: Event1, positive particles // 1: Event1, negative particles @@ -95,9 +127,16 @@ private: //TODO: better way to store it? TClonesArray? AliDielectronCF *fCfManagerPair;//Correction Framework Manager for the Pair + AliDielectronTrackRotator *fTrackRotator; //Track rotator + AliDielectronDebugTree *fDebugTree; // Debug tree output + Bool_t fPreFilterUnlikeOnly; //Apply PreFilter either in +- or to ++/--/+- individually + Bool_t fHasMC; //If we run with MC, at the moment only needed in AOD + void FillTrackArrays(AliVEvent * const ev, Int_t eventNr=0); + void PairPreFilter(Int_t arr1, Int_t arr2, TObjArray &arrTracks1, TObjArray &arrTracks2); void FillPairArrays(Int_t arr1, Int_t arr2); + void FillPairArrayTR(); Int_t GetPairIndex(Int_t arr1, Int_t arr2) const {return arr1>=arr2?arr1*(arr1+1)/2+arr2:arr2*(arr2+1)/2+arr1;} @@ -107,16 +146,20 @@ private: TObjArray* PairArray(Int_t i); static const char* fgkTrackClassNames[4]; //Names for track arrays - static const char* fgkPairClassNames[10]; //Names for pair arrays + static const char* fgkPairClassNames[11]; //Names for pair arrays void ProcessMC(); void FillHistograms(const AliVEvent *ev); + void FillHistogramsPair(AliDielectronPair *pair,Bool_t fromPreFilter=kFALSE); + void FillHistogramsTracks(TObjArray **tracks); + + void FillDebugTree(); AliDielectron(const AliDielectron &c); AliDielectron &operator=(const AliDielectron &c); - ClassDef(AliDielectron,1); + ClassDef(AliDielectron,4); }; inline void AliDielectron::InitPairCandidateArrays()