]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/AliDielectronSignalMC.h
fix expand
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronSignalMC.h
CommitLineData
ba15fdfb 1#ifndef ALIDIELECTRONSIGNALMC_H
2#define ALIDIELECTRONSIGNALMC_H
3
4#include <TNamed.h>
5
6
5720c765 7/*
8 Ionut Cristian Arsene, iarsene@cern.ch
9 */
10
ba15fdfb 11/*
12 Monte Carlo signal definition:
13 Leg #1 <-- Mother #1 <-- Grandmother #1
14 |
15 Leg #2 <-- Mother #2 <-- Grandmother #2
5720c765 16
17 For every leg, mother or grand-mother, a PDG code and a source can be specified.
18
19 1.) For the PDG codes, the PYTHIA standard is used.
20 A few non-existent PYTHIA codes are used to select more than one PYTHIA code. All these are described below
21 and implemented in AliDielectronMC::ComparePDG() function:
22 0 - default, accepts all PYTHIA codes
23 100 - light unflavoured mesons in the code range 100-199
24 200 - --"-- 200-299
25 300 - strange mesons in the code range 300-399
26 400 - charmed mesons in the code range 400-499
27 401 - open charm mesons (all D and D* mesons) 400-439
28 402 - open charm mesons and baryons together 400-439, 4000-4399
29 403 - all charm hadrons (mesons and baryons) 400-499, 4000-4999
30 500 - beauty mesons in the code range 500-599
31 501 - open beauty mesons 500-549
32 502 - open beauty mesons and baryons 500-549, 5000-5499
33 503 - all beauty hadrons 500-599, 5000-5999
c72d368f 34 902 - all open charm open beauty mesons+baryons 400-439, 500-549, 4000-4399, 5000-5499
5720c765 35 1000 - light unflavoured baryons in the code range 1000-1999
36 2000 - --"-- 2000-2999
37 3000 - strange baryons in the code range 3000-3999
38 4000 - charmed baryons in the code range 4000-4999
39 4001 - open charm baryons 4000-4399
40 5000 - beauty baryons in the code range 5000-5999
41 5001 - open beauty baryons 5000-5499
42
43 2.) If the exclusion flags are turned ON then the PDG codes required and the conventional codes described above
44 are used to exclude the selected particles.
45
46 3.) If the selection of both charges is switched ON then the PDG codes act on both particles and anti-particles.
47
48 4.) Particles sources implemented:
ba15fdfb 49 1. Primary - particle originating in the physics event
5720c765 50 2. FinalState- stable(final state) particles which reach the detector -> according to AliStack::IsPhysicalPrimary()
51 3. Direct - primary particle which has no mother (e.g. J/psi's added to pythia MC events via generator cocktails,
52 particles generated in a sudden freeze-out in thermal models, initial state particles)
53 4. Secondary - particle created during the GEANT propagation due to interaction of final state primaries with the material
54
55 5.) The 2 legs can originate from the same or different mother particles. This can be specified via the SetMotherRelation()
56 method call.
57
58 6.) The filling of the pure MC step can be switched on using SetFillPureMCStep() method call. This should be used
59 with care since at the pure MC information level there is no cut applied and for abundant particles the combinatorics
60 can be very high.
ba15fdfb 61*/
62
63
64//__________________________________________________________________
65class AliDielectronSignalMC : public TNamed {
66
67 public:
68 enum EBranchRelation {kUndefined=0, kSame, kDifferent};
1ae2dca4 69 enum ESource {kDontCare=0, kPrimary, kFinalState, kDirect, kSecondary, kNoCocktail};
ef37a5a8 70 enum EJpsiRadiativ {kAll=0, kIsRadiative, kIsNotRadiative};
ba15fdfb 71
72 AliDielectronSignalMC();
73 AliDielectronSignalMC(const Char_t* name, const Char_t* title);
74 virtual ~AliDielectronSignalMC();
75
5720c765 76 void SetLegPDGs(Int_t pdg1, Int_t pdg2, Bool_t exclude1=kFALSE, Bool_t exclude2=kFALSE)
77 {fLeg1 = pdg1; fLeg2 = pdg2; fLeg1Exclude=exclude1; fLeg2Exclude=exclude2;}
78 void SetMotherPDGs(Int_t pdg1, Int_t pdg2, Bool_t exclude1=kFALSE, Bool_t exclude2=kFALSE)
79 {fMother1 = pdg1; fMother2 = pdg2; fMother1Exclude=exclude1; fMother2Exclude=exclude2;}
80 void SetGrandMotherPDGs(Int_t pdg1, Int_t pdg2, Bool_t exclude1=kFALSE, Bool_t exclude2=kFALSE)
81 {fGrandMother1 = pdg1; fGrandMother2 = pdg2; fGrandMother1Exclude=exclude1; fGrandMother2Exclude=exclude2;}
82 void SetLegSources(ESource s1, ESource s2) {fLeg1Source = s1; fLeg2Source = s2;}
83 void SetMotherSources(ESource s1, ESource s2) {fMother1Source = s1; fMother2Source = s2;}
84 void SetGrandMotherSources(ESource s1, ESource s2) {fGrandMother1Source = s1; fGrandMother2Source = s2;}
85 void SetCheckBothChargesLegs(Bool_t flag1, Bool_t flag2) {fCheckBothChargesLeg1 = flag1; fCheckBothChargesLeg2 = flag2;}
86 void SetCheckBothChargesMothers(Bool_t flag1, Bool_t flag2) {fCheckBothChargesMother1 = flag1; fCheckBothChargesMother2 = flag2;}
ba15fdfb 87 void SetCheckBothChargesGrandMothers(Bool_t flag1, Bool_t flag2) {fCheckBothChargesGrandMother1 = flag1; fCheckBothChargesGrandMother2 = flag2;}
5720c765 88 void SetMothersRelation(EBranchRelation relation) {fMothersRelation = relation;}
89 void SetFillPureMCStep(Bool_t fill=kTRUE) {fFillPureMCStep = fill;}
90
91 Int_t GetLegPDG(Int_t branch) const {return (branch==1 ? fLeg1 : fLeg2);}
92 Int_t GetMotherPDG(Int_t branch) const {return (branch==1 ? fMother1 : fMother2);}
93 Int_t GetGrandMotherPDG(Int_t branch) const {return (branch==1 ? fGrandMother1 : fGrandMother2);}
94 Bool_t GetLegPDGexclude(Int_t branch) const {return (branch==1 ? fLeg1Exclude : fLeg2Exclude);}
95 Bool_t GetMotherPDGexclude(Int_t branch) const {return (branch==1 ? fMother1Exclude : fMother2Exclude);}
96 Bool_t GetGrandMotherPDGexclude(Int_t branch) const {return (branch==1 ? fGrandMother1Exclude : fGrandMother2Exclude);}
97 ESource GetLegSource(Int_t branch) const {return (branch==1 ? fLeg1Source : fLeg2Source);}
98 ESource GetMotherSource(Int_t branch) const {return (branch==1 ? fMother1Source : fMother2Source);}
99 ESource GetGrandMotherSource(Int_t branch) const {return (branch==1 ? fGrandMother1Source : fGrandMother2Source);}
100 Bool_t GetCheckBothChargesLegs(Int_t branch) const {return (branch==1 ? fCheckBothChargesLeg1 : fCheckBothChargesLeg2);}
101 Bool_t GetCheckBothChargesMothers(Int_t branch) const {return (branch==1 ? fCheckBothChargesMother1 : fCheckBothChargesMother2);}
102 Bool_t GetCheckBothChargesGrandMothers(Int_t branch) const {return (branch==1 ? fCheckBothChargesGrandMother1 : fCheckBothChargesGrandMother2);}
103 EBranchRelation GetMothersRelation() const {return fMothersRelation;}
104 Bool_t GetFillPureMCStep() const {return fFillPureMCStep;}
ba15fdfb 105
ef37a5a8 106 void SetJpsiRadiative(EJpsiRadiativ rad) { fJpsiRadiative=rad; }
107 EJpsiRadiativ GetJpsiRadiative() const { return fJpsiRadiative; }
ba15fdfb 108 private:
5720c765 109 // PDG codes for legs, mothers and grand-mothers
ba15fdfb 110 Int_t fLeg1; // leg 1 PDG
111 Int_t fLeg2; // leg 2 PDG
112 Int_t fMother1; // mother 1 PDG
113 Int_t fMother2; // mother 2 PDG
114 Int_t fGrandMother1; // grandmother 1 PDG
115 Int_t fGrandMother2; // grandmother 2 PDG
5720c765 116
117 // Toggle on/off the use of the PDG codes as inclusion or exclusion
118 // Example: if fLeg1=211 and fLeg1Exclude=kTRUE than all codes will be accepted for leg 1 with
119 // the exception of 211 (pions)
120 Bool_t fLeg1Exclude; // leg 1
121 Bool_t fLeg2Exclude; // leg 2
122 Bool_t fMother1Exclude; // mother 1
123 Bool_t fMother2Exclude; // mother 2
124 Bool_t fGrandMother1Exclude; // grandmother 1
125 Bool_t fGrandMother2Exclude; // grandmother 2
ba15fdfb 126
5720c765 127 // Particle sources
ba15fdfb 128 ESource fLeg1Source; // leg 1 source
129 ESource fLeg2Source; // leg 2 source
130 ESource fMother1Source; // mother 1 source
131 ESource fMother2Source; // mother 2 source
132 ESource fGrandMother1Source; // grandmother 1 source
133 ESource fGrandMother2Source; // grandmother 2 source
134
5720c765 135 // Flaggs whether to check both charges of a given PDG code
ba15fdfb 136 Bool_t fCheckBothChargesLeg1; // check both charges of the legs pdg
137 Bool_t fCheckBothChargesLeg2; // leg2
138 Bool_t fCheckBothChargesMother1; // mother 1
139 Bool_t fCheckBothChargesMother2; // mother 2
140 Bool_t fCheckBothChargesGrandMother1; // grand mother 1
141 Bool_t fCheckBothChargesGrandMother2; // grand mother 2
142
143 EBranchRelation fMothersRelation; // mother 1&2 relation (same, different or whatever)
ef37a5a8 144
145 EJpsiRadiativ fJpsiRadiative; // check for J/psi radiative decay
ba15fdfb 146
147 Bool_t fFillPureMCStep; // check and fill the pure MC step
148
ef37a5a8 149 ClassDef(AliDielectronSignalMC,2);
ba15fdfb 150};
151
152#endif