Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
CexmcChargeExchangeReconstructor Class Reference

#include <CexmcChargeExchangeReconstructor.hh>

Inheritance diagram for CexmcChargeExchangeReconstructor:
CexmcReconstructor

Public Member Functions

 CexmcChargeExchangeReconstructor (const CexmcProductionModel *productionModel)
 
 ~CexmcChargeExchangeReconstructor ()
 
void Reconstruct (const CexmcEnergyDepositStore *edStore)
 
G4double GetOutputParticleMass (void) const
 
G4double GetNucleusOutputParticleMass (void) const
 
const CexmcProductionModelDataGetProductionModelData (void) const
 
void UseTableMass (G4bool on)
 
void UseMassCut (G4bool on)
 
void SetMassCutOPCenter (G4double value)
 
void SetMassCutNOPCenter (G4double value)
 
void SetMassCutOPWidth (G4double value)
 
void SetMassCutNOPWidth (G4double value)
 
void SetMassCutEllipseAngle (G4double value)
 
void UseAbsorbedEnergyCut (G4bool on)
 
void SetAbsorbedEnergyCutCLCenter (G4double value)
 
void SetAbsorbedEnergyCutCRCenter (G4double value)
 
void SetAbsorbedEnergyCutCLWidth (G4double value)
 
void SetAbsorbedEnergyCutCRWidth (G4double value)
 
void SetAbsorbedEnergyCutEllipseAngle (G4double value)
 
void SetExpectedMomentumAmp (G4double)
 
void SetExpectedMomentumAmpDiff (G4double)
 
void SetEDCollectionAlgorithm (CexmcEDCollectionAlgoritm value)
 
void SetupBeamParticle (void)
 
G4bool IsTableMassUsed (void) const
 
G4bool IsMassCutUsed (void) const
 
G4double GetMassCutOPCenter (void) const
 
G4double GetMassCutNOPCenter (void) const
 
G4double GetMassCutOPWidth (void) const
 
G4double GetMassCutNOPWidth (void) const
 
G4double GetMassCutEllipseAngle (void) const
 
G4bool HasMassCutTriggered (void) const
 
G4bool IsAbsorbedEnergyCutUsed (void) const
 
G4double GetAbsorbedEnergyCutCLCenter (void) const
 
G4double GetAbsorbedEnergyCutCRCenter (void) const
 
G4double GetAbsorbedEnergyCutCLWidth (void) const
 
G4double GetAbsorbedEnergyCutCRWidth (void) const
 
G4double GetAbsorbedEnergyCutEllipseAngle (void) const
 
G4double GetExpectedMomentumAmp (void) const
 
CexmcEDCollectionAlgoritm GetEDCollectionAlgorithm (void) const
 
G4bool HasAbsorbedEnergyCutTriggered (void) const
 
G4bool HasFullTrigger (void) const
 
- Public Member Functions inherited from CexmcReconstructor
 CexmcReconstructor ()
 
virtual ~CexmcReconstructor ()
 
void SetCalorimeterEntryPointDefinitionAlgorithm (CexmcCalorimeterEntryPointDefinitionAlgorithm algo)
 
void SetCalorimeterEntryPointDepthDefinitionAlgorithm (CexmcCalorimeterEntryPointDepthDefinitionAlgorithm algo)
 
void SetCrystalSelectionAlgorithm (CexmcCrystalSelectionAlgorithm algo)
 
void UseInnerRefCrystal (G4bool on=true)
 
void SetCalorimeterEntryPointDepth (G4double depth)
 
CexmcCalorimeterEntryPointDefinitionAlgorithm GetCalorimeterEntryPointDefinitionAlgorithm (void) const
 
CexmcCalorimeterEntryPointDepthDefinitionAlgorithm GetCalorimeterEntryPointDepthDefinitionAlgorithm (void) const
 
CexmcCrystalSelectionAlgorithm GetCrystalSelectionAlgorithm (void) const
 
G4bool IsInnerRefCrystalUsed (void) const
 
G4double GetCalorimeterEntryPointDepth (void) const
 
const G4ThreeVectorGetCalorimeterEPLeftPosition (void) const
 
const G4ThreeVectorGetCalorimeterEPRightPosition (void) const
 
const G4ThreeVectorGetCalorimeterEPLeftDirection (void) const
 
const G4ThreeVectorGetCalorimeterEPRightDirection (void) const
 
const G4ThreeVectorGetTargetEPPosition (void) const
 
const G4ThreeVectorGetTargetEPDirection (void) const
 
const G4ThreeVectorGetCalorimeterEPLeftWorldPosition (void) const
 
const G4ThreeVectorGetCalorimeterEPRightWorldPosition (void) const
 
const G4ThreeVectorGetCalorimeterEPLeftWorldDirection (void) const
 
const G4ThreeVectorGetCalorimeterEPRightWorldDirection (void) const
 
const G4ThreeVectorGetTargetEPWorldPosition (void) const
 
const G4ThreeVectorGetTargetEPWorldDirection (void) const
 
G4double GetTheAngle (void) const
 
G4bool HasBasicTrigger (void) const
 

Additional Inherited Members

- Protected Member Functions inherited from CexmcReconstructor
void ReconstructEntryPoints (const CexmcEnergyDepositStore *edStore)
 
void ReconstructTargetPoint (void)
 
void ReconstructAngle (void)
 
- Protected Attributes inherited from CexmcReconstructor
G4bool hasBasicTrigger
 
CexmcCalorimeterEntryPointDefinitionAlgorithm epDefinitionAlgorithm
 
CexmcCalorimeterEntryPointDepthDefinitionAlgorithm epDepthDefinitionAlgorithm
 
CexmcCrystalSelectionAlgorithm csAlgorithm
 
G4bool useInnerRefCrystal
 
G4double epDepth
 
G4ThreeVector calorimeterEPLeftPosition
 
G4ThreeVector calorimeterEPRightPosition
 
G4ThreeVector calorimeterEPLeftDirection
 
G4ThreeVector calorimeterEPRightDirection
 
G4ThreeVector targetEPPosition
 
G4ThreeVector targetEPDirection
 
G4ThreeVector calorimeterEPLeftWorldPosition
 
G4ThreeVector calorimeterEPRightWorldPosition
 
G4ThreeVector calorimeterEPLeftWorldDirection
 
G4ThreeVector calorimeterEPRightWorldDirection
 
G4ThreeVector targetEPWorldPosition
 
G4ThreeVector targetEPWorldDirection
 
G4double theAngle
 
G4double calorimeterEDLeftAdjacent
 
G4double calorimeterEDRightAdjacent
 
G4bool collectEDInAdjacentCrystals
 

Detailed Description

Definition at line 57 of file CexmcChargeExchangeReconstructor.hh.

Constructor & Destructor Documentation

CexmcChargeExchangeReconstructor::CexmcChargeExchangeReconstructor ( const CexmcProductionModel productionModel)

Definition at line 57 of file CexmcChargeExchangeReconstructor.cc.

References CexmcWeirdException, CexmcProductionModel::GetIncidentParticle(), CexmcProductionModel::GetNucleusOutputParticle(), CexmcProductionModel::GetNucleusParticle(), CexmcProductionModel::GetOutputParticle(), CexmcPrimaryGeneratorAction::GetParticleGun(), G4RunManager::GetRunManager(), G4RunManager::GetUserPrimaryGeneratorAction(), CexmcProductionModelData::incidentParticle, CexmcProductionModelData::nucleusOutputParticle, CexmcProductionModelData::nucleusParticle, and CexmcProductionModelData::outputParticle.

58  :
59  outputParticleMass( 0 ), nucleusOutputParticleMass( 0 ),
60  useTableMass( false ), useMassCut( false ), massCutOPCenter( 0 ),
61  massCutNOPCenter( 0 ), massCutOPWidth( 0 ), massCutNOPWidth( 0 ),
62  massCutEllipseAngle( 0 ), useAbsorbedEnergyCut( false ),
63  absorbedEnergyCutCLCenter( 0 ), absorbedEnergyCutCRCenter( 0 ),
64  absorbedEnergyCutCLWidth( 0 ), absorbedEnergyCutCRWidth( 0 ),
65  absorbedEnergyCutEllipseAngle( 0 ), expectedMomentumAmp( -1 ),
66  edCollectionAlgorithm( CexmcCollectEDInAllCrystals ),
67  hasMassCutTriggered( false ), hasAbsorbedEnergyCutTriggered( false ),
68  beamParticleIsInitialized( false ), particleGun( NULL ), messenger( NULL )
69 {
70  if ( ! productionModel )
72 
73  productionModelData.incidentParticle =
74  productionModel->GetIncidentParticle();
75 
76  CexmcRunManager * runManager( static_cast< CexmcRunManager * >(
78  const CexmcPrimaryGeneratorAction * primaryGeneratorAction(
79  static_cast< const CexmcPrimaryGeneratorAction * >(
80  runManager->GetUserPrimaryGeneratorAction() ) );
81  CexmcPrimaryGeneratorAction * thePrimaryGeneratorAction(
82  const_cast< CexmcPrimaryGeneratorAction * >(
83  primaryGeneratorAction ) );
84  particleGun = thePrimaryGeneratorAction->GetParticleGun();
85 
86  productionModelData.nucleusParticle =
87  productionModel->GetNucleusParticle();
88  productionModelData.outputParticle =
89  productionModel->GetOutputParticle();
90  productionModelData.nucleusOutputParticle =
91  productionModel->GetNucleusOutputParticle();
92 
93  messenger = new CexmcChargeExchangeReconstructorMessenger( this );
94 }
const G4ParticleDefinition * nucleusParticle
const G4ParticleDefinition * incidentParticle
G4ParticleDefinition * GetIncidentParticle(void) const
const G4ParticleDefinition * outputParticle
G4ParticleDefinition * GetOutputParticle(void) const
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:74
G4ParticleDefinition * GetNucleusParticle(void) const
G4ParticleDefinition * GetNucleusOutputParticle(void) const
const G4ParticleDefinition * nucleusOutputParticle
CexmcChargeExchangeReconstructor::~CexmcChargeExchangeReconstructor ( )

Definition at line 97 of file CexmcChargeExchangeReconstructor.cc.

98 {
99  delete messenger;
100 }

Member Function Documentation

G4double CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCLCenter ( void  ) const
inline

Definition at line 383 of file CexmcChargeExchangeReconstructor.hh.

385 {
386  return absorbedEnergyCutCLCenter;
387 }
G4double CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCLWidth ( void  ) const
inline

Definition at line 397 of file CexmcChargeExchangeReconstructor.hh.

399 {
400  return absorbedEnergyCutCLWidth;
401 }
G4double CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCRCenter ( void  ) const
inline

Definition at line 390 of file CexmcChargeExchangeReconstructor.hh.

392 {
393  return absorbedEnergyCutCRCenter;
394 }
G4double CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCRWidth ( void  ) const
inline

Definition at line 404 of file CexmcChargeExchangeReconstructor.hh.

406 {
407  return absorbedEnergyCutCRWidth;
408 }
G4double CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutEllipseAngle ( void  ) const
inline

Definition at line 412 of file CexmcChargeExchangeReconstructor.hh.

413 {
414  return absorbedEnergyCutEllipseAngle;
415 }
CexmcEDCollectionAlgoritm CexmcChargeExchangeReconstructor::GetEDCollectionAlgorithm ( void  ) const
inline

Definition at line 426 of file CexmcChargeExchangeReconstructor.hh.

427 {
428  return edCollectionAlgorithm;
429 }
G4double CexmcChargeExchangeReconstructor::GetExpectedMomentumAmp ( void  ) const
inline

Definition at line 418 of file CexmcChargeExchangeReconstructor.hh.

420 {
421  return expectedMomentumAmp;
422 }
G4double CexmcChargeExchangeReconstructor::GetMassCutEllipseAngle ( void  ) const
inline

Definition at line 362 of file CexmcChargeExchangeReconstructor.hh.

364 {
365  return massCutEllipseAngle;
366 }
G4double CexmcChargeExchangeReconstructor::GetMassCutNOPCenter ( void  ) const
inline

Definition at line 341 of file CexmcChargeExchangeReconstructor.hh.

343 {
344  return massCutNOPCenter;
345 }
G4double CexmcChargeExchangeReconstructor::GetMassCutNOPWidth ( void  ) const
inline

Definition at line 355 of file CexmcChargeExchangeReconstructor.hh.

357 {
358  return massCutNOPWidth;
359 }
G4double CexmcChargeExchangeReconstructor::GetMassCutOPCenter ( void  ) const
inline

Definition at line 334 of file CexmcChargeExchangeReconstructor.hh.

336 {
337  return massCutOPCenter;
338 }
G4double CexmcChargeExchangeReconstructor::GetMassCutOPWidth ( void  ) const
inline

Definition at line 348 of file CexmcChargeExchangeReconstructor.hh.

350 {
351  return massCutOPWidth;
352 }
G4double CexmcChargeExchangeReconstructor::GetNucleusOutputParticleMass ( void  ) const
inline

Definition at line 205 of file CexmcChargeExchangeReconstructor.hh.

207 {
208  return nucleusOutputParticleMass;
209 }
G4double CexmcChargeExchangeReconstructor::GetOutputParticleMass ( void  ) const
inline

Definition at line 198 of file CexmcChargeExchangeReconstructor.hh.

200 {
201  return outputParticleMass;
202 }
const CexmcProductionModelData & CexmcChargeExchangeReconstructor::GetProductionModelData ( void  ) const
inline
G4bool CexmcChargeExchangeReconstructor::HasAbsorbedEnergyCutTriggered ( void  ) const
inline

Definition at line 432 of file CexmcChargeExchangeReconstructor.hh.

434 {
435  return hasAbsorbedEnergyCutTriggered;
436 }
G4bool CexmcChargeExchangeReconstructor::HasFullTrigger ( void  ) const
virtual

Reimplemented from CexmcReconstructor.

Definition at line 288 of file CexmcChargeExchangeReconstructor.cc.

References CexmcReconstructor::hasBasicTrigger.

Referenced by CexmcEventAction::EndOfEventAction().

289 {
290  if ( ! hasBasicTrigger )
291  return false;
292  if ( useMassCut && ! hasMassCutTriggered )
293  return false;
294  if ( useAbsorbedEnergyCut && ! hasAbsorbedEnergyCutTriggered )
295  return false;
296 
297  return true;
298 }
G4bool CexmcChargeExchangeReconstructor::HasMassCutTriggered ( void  ) const
inline

Definition at line 369 of file CexmcChargeExchangeReconstructor.hh.

371 {
372  return hasMassCutTriggered;
373 }
G4bool CexmcChargeExchangeReconstructor::IsAbsorbedEnergyCutUsed ( void  ) const
inline

Definition at line 376 of file CexmcChargeExchangeReconstructor.hh.

378 {
379  return useAbsorbedEnergyCut;
380 }
G4bool CexmcChargeExchangeReconstructor::IsMassCutUsed ( void  ) const
inline

Definition at line 328 of file CexmcChargeExchangeReconstructor.hh.

329 {
330  return useMassCut;
331 }
G4bool CexmcChargeExchangeReconstructor::IsTableMassUsed ( void  ) const
inline

Definition at line 322 of file CexmcChargeExchangeReconstructor.hh.

323 {
324  return useTableMass;
325 }
void CexmcChargeExchangeReconstructor::Reconstruct ( const CexmcEnergyDepositStore edStore)
virtual

Reimplemented from CexmcReconstructor.

Definition at line 113 of file CexmcChargeExchangeReconstructor.cc.

References CLHEP::HepLorentzVector::boost(), CLHEP::HepLorentzVector::boostVector(), CexmcEnergyDepositStore::calorimeterEDLeft, CexmcReconstructor::calorimeterEDLeftAdjacent, CexmcEnergyDepositStore::calorimeterEDRight, CexmcReconstructor::calorimeterEDRightAdjacent, CexmcReconstructor::calorimeterEPLeftWorldPosition, CexmcReconstructor::calorimeterEPRightWorldPosition, CexmcBeamAndIncidentParticlesMismatch, CexmcCollectEDInAdjacentCrystals, CexmcReconstructor::collectEDInAdjacentCrystals, CexmcParticleGun::GetOrigDirection(), CexmcParticleGun::GetOrigMomentumAmp(), G4ParticleGun::GetParticleDefinition(), G4ParticleDefinition::GetPDGMass(), CexmcReconstructor::hasBasicTrigger, CexmcProductionModelData::incidentParticle, CexmcProductionModelData::incidentParticleLAB, CexmcProductionModelData::incidentParticleSCM, CLHEP::Hep3Vector::mag2(), CexmcProductionModelData::nucleusOutputParticleLAB, CexmcProductionModelData::nucleusOutputParticleSCM, CexmcProductionModelData::nucleusParticle, CexmcProductionModelData::nucleusParticleLAB, CexmcProductionModelData::nucleusParticleSCM, CexmcProductionModelData::outputParticle, CexmcProductionModelData::outputParticleLAB, CexmcProductionModelData::outputParticleSCM, CexmcReconstructor::ReconstructAngle(), CexmcReconstructor::ReconstructEntryPoints(), CexmcReconstructor::ReconstructTargetPoint(), CLHEP::Hep3Vector::setMag(), CexmcReconstructor::targetEPWorldPosition, and CexmcReconstructor::theAngle.

Referenced by CexmcEventAction::EndOfEventAction().

115 {
116  if ( ! beamParticleIsInitialized )
117  {
118  if ( *productionModelData.incidentParticle !=
119  *particleGun->GetParticleDefinition() )
121 
122  beamParticleIsInitialized = true;
123  }
124 
125  if ( edCollectionAlgorithm == CexmcCollectEDInAdjacentCrystals )
127 
128  ReconstructEntryPoints( edStore );
129  if ( hasBasicTrigger )
131  if ( hasBasicTrigger )
133 
138 
139  G4double cosTheAngle( std::cos( theAngle ) );
140  G4double calorimeterEDLeft( edStore->calorimeterEDLeft );
141  G4double calorimeterEDRight( edStore->calorimeterEDRight );
142 
143  if ( edCollectionAlgorithm == CexmcCollectEDInAdjacentCrystals )
144  {
145  calorimeterEDLeft = calorimeterEDLeftAdjacent;
146  calorimeterEDRight = calorimeterEDRightAdjacent;
147  }
148 
149  //G4double cosOutputParticleLAB(
150  //( calorimeterEDLeft * cosAngleLeft +
151  //calorimeterEDRight * cosAngleRight ) /
152  //std::sqrt( calorimeterEDLeft * calorimeterEDLeft +
153  //calorimeterEDRight * calorimeterEDRight +
154  //calorimeterEDLeft * calorimeterEDRight * cosTheAngle ) );
155 
156  outputParticleMass = std::sqrt( 2 * calorimeterEDLeft *
157  calorimeterEDRight * ( 1 - cosTheAngle ) );
158 
159  G4ThreeVector opdpLeftMomentum( epLeft );
160  opdpLeftMomentum.setMag( calorimeterEDLeft );
161  G4ThreeVector opdpRightMomentum( epRight );
162  opdpRightMomentum.setMag( calorimeterEDRight );
163  G4ThreeVector opMomentum( opdpLeftMomentum + opdpRightMomentum );
164 
165  /* opMass will be used only in calculation of output particle's total
166  * energy, in other places outputParticleMass should be used instead */
167  G4double opMass( useTableMass ?
168  productionModelData.outputParticle->GetPDGMass() :
169  outputParticleMass );
170  /* the formula below is equivalent to
171  * calorimeterEDLeft + calorimeterEDRight if opMass = outputParticleMass */
172  G4double opEnergy( std::sqrt( opMomentum.mag2() +
173  opMass * opMass ) );
174  productionModelData.outputParticleLAB = G4LorentzVector( opMomentum,
175  opEnergy );
176 
177  G4ThreeVector incidentParticleMomentum( particleGun->GetOrigDirection() );
178  G4double incidentParticleMomentumAmp( expectedMomentumAmp > 0 ?
179  expectedMomentumAmp : particleGun->GetOrigMomentumAmp() );
180  incidentParticleMomentum *= incidentParticleMomentumAmp;
181 
182  G4double incidentParticlePDGMass(
183  productionModelData.incidentParticle->GetPDGMass() );
184  G4double incidentParticlePDGMass2( incidentParticlePDGMass *
185  incidentParticlePDGMass );
186  G4double incidentParticleEnergy(
187  std::sqrt( incidentParticleMomentumAmp * incidentParticleMomentumAmp +
188  incidentParticlePDGMass2 ) );
189 
190  productionModelData.incidentParticleLAB = G4LorentzVector(
191  incidentParticleMomentum, incidentParticleEnergy );
192  G4double nucleusParticlePDGMass(
193  productionModelData.nucleusParticle->GetPDGMass() );
194  productionModelData.nucleusParticleLAB = G4LorentzVector(
195  G4ThreeVector( 0, 0, 0 ), nucleusParticlePDGMass );
196 
197  G4LorentzVector lVecSum( productionModelData.incidentParticleLAB +
198  productionModelData.nucleusParticleLAB );
199  G4ThreeVector boostVec( lVecSum.boostVector() );
200 
201  productionModelData.nucleusOutputParticleLAB =
202  lVecSum - productionModelData.outputParticleLAB;
203 
204  productionModelData.incidentParticleSCM =
205  productionModelData.incidentParticleLAB;
206  productionModelData.nucleusParticleSCM =
207  productionModelData.nucleusParticleLAB;
208  productionModelData.outputParticleSCM =
209  productionModelData.outputParticleLAB;
210  productionModelData.nucleusOutputParticleSCM =
211  productionModelData.nucleusOutputParticleLAB;
212 
213  productionModelData.incidentParticleSCM.boost( -boostVec );
214  productionModelData.nucleusParticleSCM.boost( -boostVec );
215  productionModelData.outputParticleSCM.boost( -boostVec );
216  productionModelData.nucleusOutputParticleSCM.boost( -boostVec );
217 
218  G4ThreeVector nopMomentum( incidentParticleMomentum - opMomentum );
219  G4double nopEnergy( incidentParticleEnergy + nucleusParticlePDGMass -
220  opEnergy );
221  nucleusOutputParticleMass = std::sqrt( nopEnergy * nopEnergy -
222  nopMomentum.mag2() );
223 
224  if ( useMassCut )
225  {
226  G4double cosMassCutEllipseAngle( std::cos( massCutEllipseAngle ) );
227  G4double sinMassCutEllipseAngle( std::sin( massCutEllipseAngle ) );
228 
229  if ( massCutOPWidth <= 0. || massCutNOPWidth <= 0. )
230  {
231  hasMassCutTriggered = false;
232  }
233  else
234  {
235  G4double massCutOPWidth2( massCutOPWidth * massCutOPWidth );
236  G4double massCutNOPWidth2( massCutNOPWidth * massCutNOPWidth );
237 
238  hasMassCutTriggered =
239  std::pow( ( outputParticleMass - massCutOPCenter ) *
240  cosMassCutEllipseAngle +
241  ( nucleusOutputParticleMass - massCutNOPCenter ) *
242  sinMassCutEllipseAngle, 2 ) / massCutOPWidth2 +
243  std::pow( - ( outputParticleMass - massCutOPCenter ) *
244  sinMassCutEllipseAngle +
245  ( nucleusOutputParticleMass - massCutNOPCenter ) *
246  cosMassCutEllipseAngle, 2 ) / massCutNOPWidth2 <
247  1;
248  }
249  }
250 
251  if ( useAbsorbedEnergyCut )
252  {
253  G4double cosAbsorbedEnergyCutEllipseAngle(
254  std::cos( absorbedEnergyCutEllipseAngle ) );
255  G4double sinAbsorbedEnergyCutEllipseAngle(
256  std::sin( absorbedEnergyCutEllipseAngle ) );
257 
258  if ( absorbedEnergyCutCLWidth <= 0. || absorbedEnergyCutCRWidth <= 0. )
259  {
260  hasAbsorbedEnergyCutTriggered = false;
261  }
262  else
263  {
264  G4double absorbedEnergyCutCLWidth2(
265  absorbedEnergyCutCLWidth * absorbedEnergyCutCLWidth );
266  G4double absorbedEnergyCutCRWidth2(
267  absorbedEnergyCutCRWidth * absorbedEnergyCutCRWidth );
268 
269  hasAbsorbedEnergyCutTriggered =
270  std::pow( ( calorimeterEDLeft - absorbedEnergyCutCLCenter ) *
271  cosAbsorbedEnergyCutEllipseAngle +
272  ( calorimeterEDRight - absorbedEnergyCutCRCenter ) *
273  sinAbsorbedEnergyCutEllipseAngle, 2 ) /
274  absorbedEnergyCutCLWidth2 +
275  std::pow( - ( calorimeterEDLeft - absorbedEnergyCutCLCenter ) *
276  sinAbsorbedEnergyCutEllipseAngle +
277  ( calorimeterEDRight - absorbedEnergyCutCRCenter ) *
278  cosAbsorbedEnergyCutEllipseAngle, 2 ) /
279  absorbedEnergyCutCRWidth2 <
280  1;
281  }
282  }
283 
284  hasBasicTrigger = true;
285 }
const G4ParticleDefinition * nucleusParticle
G4ThreeVector calorimeterEPLeftWorldPosition
CLHEP::Hep3Vector G4ThreeVector
const G4ParticleDefinition * incidentParticle
G4double GetOrigMomentumAmp(void) const
const G4ParticleDefinition * outputParticle
G4ThreeVector targetEPWorldPosition
void ReconstructEntryPoints(const CexmcEnergyDepositStore *edStore)
HepLorentzVector & boost(double, double, double)
void ReconstructTargetPoint(void)
G4ThreeVector calorimeterEPRightWorldPosition
G4double GetPDGMass() const
G4ParticleDefinition * GetParticleDefinition() const
double G4double
Definition: G4Types.hh:76
const G4ThreeVector & GetOrigDirection(void) const
CLHEP::HepLorentzVector G4LorentzVector
void CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCLCenter ( G4double  value)
inline

Definition at line 273 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

275 {
276  absorbedEnergyCutCLCenter = value;
277 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCLWidth ( G4double  value)
inline

Definition at line 287 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

289 {
290  absorbedEnergyCutCLWidth = value;
291 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCRCenter ( G4double  value)
inline

Definition at line 280 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

282 {
283  absorbedEnergyCutCRCenter = value;
284 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCRWidth ( G4double  value)
inline

Definition at line 294 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

296 {
297  absorbedEnergyCutCRWidth = value;
298 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutEllipseAngle ( G4double  value)
inline

Definition at line 301 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

303 {
304  absorbedEnergyCutEllipseAngle = value;
305 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetEDCollectionAlgorithm ( CexmcEDCollectionAlgoritm  value)
inline

Definition at line 315 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

317 {
318  edCollectionAlgorithm = value;
319 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetExpectedMomentumAmp ( G4double  value)
inline

Definition at line 308 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

310 {
311  expectedMomentumAmp = value;
312 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetExpectedMomentumAmpDiff ( G4double  value)

Definition at line 301 of file CexmcChargeExchangeReconstructor.cc.

References CexmcParticleGun::GetOrigMomentumAmp().

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

303 {
304  expectedMomentumAmp = particleGun->GetOrigMomentumAmp() + value;
305 }
G4double GetOrigMomentumAmp(void) const
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetMassCutEllipseAngle ( G4double  value)
inline

Definition at line 259 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

261 {
262  massCutEllipseAngle = value;
263 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetMassCutNOPCenter ( G4double  value)
inline

Definition at line 238 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

240 {
241  massCutNOPCenter = value;
242 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetMassCutNOPWidth ( G4double  value)
inline

Definition at line 252 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

254 {
255  massCutNOPWidth = value;
256 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetMassCutOPCenter ( G4double  value)
inline

Definition at line 231 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

233 {
234  massCutOPCenter = value;
235 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetMassCutOPWidth ( G4double  value)
inline

Definition at line 245 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

247 {
248  massCutOPWidth = value;
249 }
const XML_Char int const XML_Char * value
void CexmcChargeExchangeReconstructor::SetupBeamParticle ( void  )

Definition at line 103 of file CexmcChargeExchangeReconstructor.cc.

References CexmcBeamAndIncidentParticlesMismatch, G4ParticleGun::GetParticleDefinition(), and CexmcProductionModelData::incidentParticle.

Referenced by CexmcEventAction::BeamParticleChangeHook().

104 {
105  if ( *productionModelData.incidentParticle !=
106  *particleGun->GetParticleDefinition() )
108 
109  beamParticleIsInitialized = true;
110 }
const G4ParticleDefinition * incidentParticle
G4ParticleDefinition * GetParticleDefinition() const
void CexmcChargeExchangeReconstructor::UseAbsorbedEnergyCut ( G4bool  on)
inline

Definition at line 266 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

268 {
269  useAbsorbedEnergyCut = on;
270 }
void CexmcChargeExchangeReconstructor::UseMassCut ( G4bool  on)
inline

Definition at line 225 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

226 {
227  useMassCut = on;
228 }
void CexmcChargeExchangeReconstructor::UseTableMass ( G4bool  on)
inline

Definition at line 219 of file CexmcChargeExchangeReconstructor.hh.

Referenced by CexmcChargeExchangeReconstructorMessenger::SetNewValue().

220 {
221  useTableMass = on;
222 }

The documentation for this class was generated from the following files: