CMS 3D CMS Logo

List of all members | Public Member Functions
CMSHyperonFTFPBuilder Class Reference

#include <CMSHyperonFTFPBuilder.h>

Inheritance diagram for CMSHyperonFTFPBuilder:

Public Member Functions

void Build () final
 
 CMSHyperonFTFPBuilder ()
 
 ~CMSHyperonFTFPBuilder () override
 

Detailed Description

Definition at line 17 of file CMSHyperonFTFPBuilder.h.

Constructor & Destructor Documentation

◆ CMSHyperonFTFPBuilder()

CMSHyperonFTFPBuilder::CMSHyperonFTFPBuilder ( )

Definition at line 32 of file CMSHyperonFTFPBuilder.cc.

32 {}

◆ ~CMSHyperonFTFPBuilder()

CMSHyperonFTFPBuilder::~CMSHyperonFTFPBuilder ( )
override

Definition at line 34 of file CMSHyperonFTFPBuilder.cc.

34 {}

Member Function Documentation

◆ Build()

void CMSHyperonFTFPBuilder::Build ( )
final

Definition at line 36 of file CMSHyperonFTFPBuilder.cc.

36  {
37  // Hyperon : Bertini at low energies, then FTFP
38 
39  auto HyperonFTFP = new G4TheoFSGenerator("FTFP");
40 
41  HyperonFTFP->SetMinEnergy(G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade());
42  HyperonFTFP->SetMaxEnergy(G4HadronicParameters::Instance()->GetMaxEnergy());
43 
44  auto theStringModel = new G4FTFModel;
45  auto theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation());
46  theStringModel->SetFragmentationModel(theStringDecay);
47 
48  auto theCascade = new G4GeneratorPrecompoundInterface;
49 
50  HyperonFTFP->SetTransport(theCascade);
51  HyperonFTFP->SetHighEnergyGenerator(theStringModel);
52 
53  auto theBertini = new G4CascadeInterface;
54  theBertini->SetMinEnergy(0.0);
55  theBertini->SetMaxEnergy(G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade());
56 
57  // AntiHyperons: Use FTFP for full energy range, starting at 0.
58 
59  auto AntiHyperonFTFP = new G4TheoFSGenerator("FTFP");
60  AntiHyperonFTFP->SetMinEnergy(0.0);
61  AntiHyperonFTFP->SetMaxEnergy(G4HadronicParameters::Instance()->GetMaxEnergy());
62  AntiHyperonFTFP->SetTransport(theCascade);
63  AntiHyperonFTFP->SetHighEnergyGenerator(theStringModel);
64 
65  // use Glauber-Gribov cross sections
66  auto theInelasticCrossSection = new G4CrossSectionInelastic(new G4ComponentGGHadronNucleusXsc);
67 
68  G4ProcessManager* aProcMan = nullptr;
69 
70  // Lambda
71  auto theLambdaInelastic = new G4LambdaInelasticProcess();
72  theLambdaInelastic->RegisterMe(theBertini);
73  theLambdaInelastic->RegisterMe(HyperonFTFP);
74  theLambdaInelastic->AddDataSet(theInelasticCrossSection);
75  aProcMan = G4Lambda::Lambda()->GetProcessManager();
76  aProcMan->AddDiscreteProcess(theLambdaInelastic);
77 
78  // AntiLambda
79  auto theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess();
80  theAntiLambdaInelastic->RegisterMe(AntiHyperonFTFP);
81  theAntiLambdaInelastic->AddDataSet(theInelasticCrossSection);
82 
83  aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager();
84  aProcMan->AddDiscreteProcess(theAntiLambdaInelastic);
85 
86  // SigmaMinus
87  auto theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess();
88  theSigmaMinusInelastic->RegisterMe(theBertini);
89  theSigmaMinusInelastic->RegisterMe(HyperonFTFP);
90  theSigmaMinusInelastic->AddDataSet(theInelasticCrossSection);
91 
92  aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager();
93  aProcMan->AddDiscreteProcess(theSigmaMinusInelastic);
94 
95  // anti-SigmaMinus
96  auto theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess();
97  theAntiSigmaMinusInelastic->RegisterMe(AntiHyperonFTFP);
98  theAntiSigmaMinusInelastic->AddDataSet(theInelasticCrossSection);
99 
100  aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
101  aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic);
102 
103  // SigmaPlus
104  auto theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess();
105  theSigmaPlusInelastic->RegisterMe(theBertini);
106  theSigmaPlusInelastic->RegisterMe(HyperonFTFP);
107  theSigmaPlusInelastic->AddDataSet(theInelasticCrossSection);
108 
109  aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager();
110  aProcMan->AddDiscreteProcess(theSigmaPlusInelastic);
111 
112  // anti-SigmaPlus
113  auto theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess();
114  theAntiSigmaPlusInelastic->RegisterMe(AntiHyperonFTFP);
115  theAntiSigmaPlusInelastic->AddDataSet(theInelasticCrossSection);
116 
117  aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
118  aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic);
119 
120  // XiMinus
121  auto theXiMinusInelastic = new G4XiMinusInelasticProcess();
122  theXiMinusInelastic->RegisterMe(theBertini);
123  theXiMinusInelastic->RegisterMe(HyperonFTFP);
124  theXiMinusInelastic->AddDataSet(theInelasticCrossSection);
125 
126  aProcMan = G4XiMinus::XiMinus()->GetProcessManager();
127  aProcMan->AddDiscreteProcess(theXiMinusInelastic);
128 
129  // anti-XiMinus
130  auto theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess();
131  theAntiXiMinusInelastic->RegisterMe(AntiHyperonFTFP);
132  theAntiXiMinusInelastic->AddDataSet(theInelasticCrossSection);
133 
134  aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
135  aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic);
136 
137  // XiZero
138  auto theXiZeroInelastic = new G4XiZeroInelasticProcess();
139  theXiZeroInelastic->RegisterMe(theBertini);
140  theXiZeroInelastic->RegisterMe(HyperonFTFP);
141  theXiZeroInelastic->AddDataSet(theInelasticCrossSection);
142 
143  aProcMan = G4XiZero::XiZero()->GetProcessManager();
144  aProcMan->AddDiscreteProcess(theXiZeroInelastic);
145 
146  // anti-XiZero
147  auto theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess();
148  theAntiXiZeroInelastic->RegisterMe(AntiHyperonFTFP);
149  theAntiXiZeroInelastic->AddDataSet(theInelasticCrossSection);
150 
151  aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager();
152  aProcMan->AddDiscreteProcess(theAntiXiZeroInelastic);
153 
154  // OmegaMinus
155  auto theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess();
156  theOmegaMinusInelastic->RegisterMe(theBertini);
157  theOmegaMinusInelastic->RegisterMe(HyperonFTFP);
158  theOmegaMinusInelastic->AddDataSet(theInelasticCrossSection);
159 
160  aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager();
161  aProcMan->AddDiscreteProcess(theOmegaMinusInelastic);
162 
163  // anti-OmegaMinus
164  auto theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess();
165  theAntiOmegaMinusInelastic->RegisterMe(AntiHyperonFTFP);
166  theAntiOmegaMinusInelastic->AddDataSet(theInelasticCrossSection);
167 
168  aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
169  aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic);
170 }

References BPhysicsValidation_cfi::Lambda.

BPhysicsValidation_cfi.Lambda
Lambda
Definition: BPhysicsValidation_cfi.py:63