1 #ifndef ALIDIELECTRONSIGNALMC_H
2 #define ALIDIELECTRONSIGNALMC_H
8 Monte Carlo signal definition:
9 Leg #1 <-- Mother #1 <-- Grandmother #1
11 Leg #2 <-- Mother #2 <-- Grandmother #2
12 All particles can be classified as:
13 1. Primary - particle originating in the physics event
14 2. Secondary - particle created during the GEANT propagation due to interaction of primaries with the material
15 3. Direct - particle directly created in the collision (has no mother)
16 4. Secondary - particle which is the product of the decay or reinteraction of another particle
17 The 2 legs can originate from the same or different mother particles.
21 //__________________________________________________________________
22 class AliDielectronSignalMC : public TNamed {
25 enum EBranchRelation {kUndefined=0, kSame, kDifferent};
26 enum ESource {kDontCare=0, kPrimary, kSecondary, kDirect, kDecayProduct};
28 AliDielectronSignalMC();
29 AliDielectronSignalMC(const Char_t* name, const Char_t* title);
30 virtual ~AliDielectronSignalMC();
32 void SetLegPDGs(Int_t pdg1, Int_t pdg2) {fLeg1 = pdg1; fLeg2 = pdg2;}
33 void SetMotherPDGs(Int_t pdg1, Int_t pdg2) {fMother1 = pdg1; fMother2 = pdg2;}
34 void SetGrandMotherPDGs(Int_t pdg1, Int_t pdg2) {fGrandMother1 = pdg1; fGrandMother2 = pdg2;}
35 void SetLegSources(ESource s1, ESource s2) {fLeg1Source = s1; fLeg2Source = s2;}
36 void SetMotherSources(ESource s1, ESource s2) {fMother1Source = s1; fMother2Source = s2;}
37 void SetGrandMotherSources(ESource s1, ESource s2) {fGrandMother1Source = s1; fGrandMother2Source = s2;}
38 void SetCheckBothChargesLegs(Bool_t flag1, Bool_t flag2) {fCheckBothChargesLeg1 = flag1; fCheckBothChargesLeg2 = flag2;}
39 void SetCheckBothChargesMothers(Bool_t flag1, Bool_t flag2) {fCheckBothChargesMother1 = flag1; fCheckBothChargesMother2 = flag2;}
40 void SetCheckBothChargesGrandMothers(Bool_t flag1, Bool_t flag2) {fCheckBothChargesGrandMother1 = flag1; fCheckBothChargesGrandMother2 = flag2;}
41 void SetMothersRelation(EBranchRelation relation) {fMothersRelation = relation;}
42 void SetFillPureMCStep(Bool_t fill=kTRUE) {fFillPureMCStep = fill;}
44 Int_t GetLegPDG(Int_t branch) const {return (branch==1 ? fLeg1 : fLeg2);}
45 Int_t GetMotherPDG(Int_t branch) const {return (branch==1 ? fMother1 : fMother2);}
46 Int_t GetGrandMotherPDG(Int_t branch) const {return (branch==1 ? fGrandMother1 : fGrandMother2);}
47 ESource GetLegSource(Int_t branch) const {return (branch==1 ? fLeg1Source : fLeg2Source);}
48 ESource GetMotherSource(Int_t branch) const {return (branch==1 ? fMother1Source : fMother2Source);}
49 ESource GetGrandMotherSource(Int_t branch) const {return (branch==1 ? fGrandMother1Source : fGrandMother2Source);}
50 Bool_t GetCheckBothChargesLegs(Int_t branch) const {return (branch==1 ? fCheckBothChargesLeg1 : fCheckBothChargesLeg2);}
51 Bool_t GetCheckBothChargesMothers(Int_t branch) const {return (branch==1 ? fCheckBothChargesMother1 : fCheckBothChargesMother2);}
52 Bool_t GetCheckBothChargesGrandMothers(Int_t branch) const {return (branch==1 ? fCheckBothChargesGrandMother1 : fCheckBothChargesGrandMother2);}
53 EBranchRelation GetMothersRelation() const {return fMothersRelation;}
54 Bool_t GetFillPureMCStep() const {return fFillPureMCStep;}
57 Int_t fLeg1; // leg 1 PDG
58 Int_t fLeg2; // leg 2 PDG
59 Int_t fMother1; // mother 1 PDG
60 Int_t fMother2; // mother 2 PDG
61 Int_t fGrandMother1; // grandmother 1 PDG
62 Int_t fGrandMother2; // grandmother 2 PDG
64 ESource fLeg1Source; // leg 1 source
65 ESource fLeg2Source; // leg 2 source
66 ESource fMother1Source; // mother 1 source
67 ESource fMother2Source; // mother 2 source
68 ESource fGrandMother1Source; // grandmother 1 source
69 ESource fGrandMother2Source; // grandmother 2 source
71 Bool_t fCheckBothChargesLeg1; // check both charges of the legs pdg
72 Bool_t fCheckBothChargesLeg2; // leg2
73 Bool_t fCheckBothChargesMother1; // mother 1
74 Bool_t fCheckBothChargesMother2; // mother 2
75 Bool_t fCheckBothChargesGrandMother1; // grand mother 1
76 Bool_t fCheckBothChargesGrandMother2; // grand mother 2
78 EBranchRelation fMothersRelation; // mother 1&2 relation (same, different or whatever)
80 Bool_t fFillPureMCStep; // check and fill the pure MC step
82 ClassDef(AliDielectronSignalMC,1);