1 #ifndef ALIRSNMINIOUTPUT_H
2 #define ALIRSNMINIOUTPUT_H
6 // All the definitions needed for building a RSN histogram
8 // -- properties of resonance (mass, PDG code if needed)
9 // -- properties of daughters (assigned mass, charges)
10 // -- definition of output histogram
13 #include "AliRsnDaughter.h"
14 #include "AliRsnMiniParticle.h"
24 class AliRsnMiniEvent;
26 typedef AliRsnDaughter::ESpecies RSNPID;
28 class AliRsnMiniOutput : public TNamed {
49 AliRsnMiniOutput(const char *name, EOutputType type, EComputation src = kTrackPair);
50 AliRsnMiniOutput(const char *name, const char *outType, const char *compType);
51 AliRsnMiniOutput(const AliRsnMiniOutput ©);
52 AliRsnMiniOutput& operator=(const AliRsnMiniOutput ©);
54 Bool_t IsEventOnly() const {return (fComputation == kEventOnly);}
55 Bool_t IsTrackPair() const {return (fComputation == kTrackPair);}
56 Bool_t IsTrackPairMix() const {return (fComputation == kTrackPairMix);}
57 Bool_t IsTruePair() const {return (fComputation == kTruePair);}
58 Bool_t IsMother() const {return (fComputation == kMother);}
59 Bool_t IsDefined() const {return (IsEventOnly() || IsTrackPair() || IsTrackPairMix() || IsTruePair() || IsMother());}
61 EOutputType GetOutputType() const {return fOutputType;}
62 EComputation GetComputation() const {return fComputation;}
63 Int_t GetCutID(Int_t i) const {if (i <= 0) return fCutID [0]; else return fCutID [1];}
64 RSNPID GetDaughter(Int_t i) const {if (i <= 0) return fDaughter[0]; else return fDaughter[1];}
65 Double_t GetMass(Int_t i) const {return AliRsnDaughter::SpeciesMass(GetDaughter(i));}
66 Int_t GetPDG(Int_t i) const {return AliRsnDaughter::SpeciesPDG(GetDaughter(i));}
67 Int_t GetCharge(Int_t i) const {if (i <= 0) return fCharge[0]; else return fCharge[1];}
68 Int_t GetMotherPDG() const {return fMotherPDG;}
69 Double_t GetMotherMass() const {return fMotherMass;}
71 void SetOutputType(EOutputType type) {fOutputType = type;}
72 void SetComputation(EComputation src) {fComputation = src;}
73 void SetCutID(Int_t i, Int_t value) {if (i <= 0) fCutID [0] = value; else fCutID [1] = value;}
74 void SetDaughter(Int_t i, RSNPID value) {if (i <= 0) fDaughter[0] = value; else fDaughter[1] = value;}
75 void SetCharge(Int_t i, Char_t value) {if (i <= 0) fCharge[0] = value; else fCharge[1] = value;}
76 void SetMotherPDG(Int_t pdg) {fMotherPDG = pdg;}
77 void SetMotherMass(Double_t mass) {fMotherMass = mass;}
78 void SetPairCuts(AliRsnCutSet *set) {fPairCuts = set;}
80 void AddAxis(Int_t id, Int_t nbins, Double_t min, Double_t max);
81 void AddAxis(Int_t id, Double_t min, Double_t max, Double_t step);
82 void AddAxis(Int_t id, Int_t nbins, Double_t *values);
83 AliRsnMiniAxis* GetAxis(Int_t i) {if (i >= 0 && i < fAxes.GetEntries()) return (AliRsnMiniAxis*)fAxes[i]; return 0x0;}
84 Double_t* GetAllComputed() {return fComputed.GetArray();}
86 AliRsnMiniPair& Pair() {return fPair;}
87 Bool_t Init(const char *prefix, TList *list);
88 Bool_t Fill(AliRsnMiniParticle *p1, AliRsnMiniParticle *p2, AliRsnMiniEvent *event, TClonesArray *valueList);
89 Bool_t Fill(const AliRsnMiniPair *pair, AliRsnMiniEvent *event, TClonesArray *valueList);
90 Bool_t Fill(AliRsnMiniEvent *event, TClonesArray *valueList);
94 void CreateHistogram(const char *name);
95 void CreateHistogramSparse(const char *name);
96 Bool_t ComputeValues(AliRsnMiniEvent *event, TClonesArray *valueList);
97 Bool_t FillHistogram();
99 EOutputType fOutputType; // type of output
100 EComputation fComputation; // type of computation
101 Int_t fCutID[2]; // ID of cut set used to select tracks
102 RSNPID fDaughter[2]; // species of daughters
103 Char_t fCharge[2]; // required track charge
104 Int_t fMotherPDG; // PDG code of resonance
105 Double_t fMotherMass; // nominal resonance mass
106 AliRsnCutSet *fPairCuts; // cuts on the pair
108 Int_t fOutputID; // index of output object in container list
109 TClonesArray fAxes; // definitions for the axes of each value
110 TArrayD fComputed; //! temporary container for all computed values
111 AliRsnMiniPair fPair; //! minipair for computations
112 TList *fList; //! pointer to the TList containing the output
114 ClassDef(AliRsnMiniOutput,1) // AliRsnMiniOutput class