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 ),
 
   67     hasMassCutTriggered( false ), hasAbsorbedEnergyCutTriggered( false ),
 
   68     beamParticleIsInitialized( false ), particleGun( NULL ), messenger( NULL )
 
   70     if ( ! productionModel )
 
   79                         static_cast< const CexmcPrimaryGeneratorAction * >(
 
   82                         const_cast< CexmcPrimaryGeneratorAction * >(
 
   83                                 primaryGeneratorAction ) );
 
  157                                     calorimeterEDRight * ( 1 - cosTheAngle ) );
 
  160     opdpLeftMomentum.setMag( calorimeterEDLeft );
 
  162     opdpRightMomentum.setMag( calorimeterEDRight );
 
  163     G4ThreeVector    opMomentum( opdpLeftMomentum + opdpRightMomentum );
 
  172     G4double         opEnergy( std::sqrt( opMomentum.mag2() +
 
  180     incidentParticleMomentum *= incidentParticleMomentumAmp;
 
  184     G4double       incidentParticlePDGMass2( incidentParticlePDGMass *
 
  185                                              incidentParticlePDGMass );
 
  187         std::sqrt( incidentParticleMomentumAmp * incidentParticleMomentumAmp +
 
  188                    incidentParticlePDGMass2 ) );
 
  191                         incidentParticleMomentum, incidentParticleEnergy );
 
  218     G4ThreeVector  nopMomentum( incidentParticleMomentum - opMomentum );
 
  219     G4double       nopEnergy( incidentParticleEnergy + nucleusParticlePDGMass -
 
  222                                            nopMomentum.mag2() );
 
  240                               cosMassCutEllipseAngle +
 
  242                               sinMassCutEllipseAngle, 2 ) / massCutOPWidth2 +
 
  244                               sinMassCutEllipseAngle +
 
  246                               cosMassCutEllipseAngle, 2 ) / massCutNOPWidth2 <
 
  253         G4double  cosAbsorbedEnergyCutEllipseAngle(
 
  255         G4double  sinAbsorbedEnergyCutEllipseAngle(
 
  271                               cosAbsorbedEnergyCutEllipseAngle +
 
  273                               sinAbsorbedEnergyCutEllipseAngle, 2 ) /
 
  274                 absorbedEnergyCutCLWidth2 +
 
  276                               sinAbsorbedEnergyCutEllipseAngle +
 
  278                               cosAbsorbedEnergyCutEllipseAngle, 2 ) /
 
  279                 absorbedEnergyCutCRWidth2 <
 
G4double massCutEllipseAngle
 
G4LorentzVector nucleusOutputParticleLAB
 
const G4ParticleDefinition * nucleusParticle
 
G4ThreeVector calorimeterEPLeftWorldPosition
 
const G4VUserPrimaryGeneratorAction * GetUserPrimaryGeneratorAction() const 
 
G4double absorbedEnergyCutCRCenter
 
void SetExpectedMomentumAmpDiff(G4double)
 
CLHEP::Hep3Vector G4ThreeVector
 
G4double expectedMomentumAmp
 
G4double calorimeterEDLeftAdjacent
 
G4double calorimeterEDLeft
 
void SetupBeamParticle(void)
 
G4double absorbedEnergyCutEllipseAngle
 
const G4ParticleDefinition * incidentParticle
 
G4double calorimeterEDRight
 
G4double GetOrigMomentumAmp(void) const 
 
G4ParticleDefinition * GetIncidentParticle(void) const 
 
G4LorentzVector incidentParticleSCM
 
~CexmcChargeExchangeReconstructor()
 
G4LorentzVector incidentParticleLAB
 
void ReconstructAngle(void)
 
CexmcChargeExchangeReconstructorMessenger * messenger
 
G4LorentzVector outputParticleLAB
 
G4LorentzVector outputParticleSCM
 
const G4ParticleDefinition * outputParticle
 
G4LorentzVector nucleusParticleLAB
 
G4LorentzVector nucleusOutputParticleSCM
 
G4ThreeVector targetEPWorldPosition
 
void ReconstructEntryPoints(const CexmcEnergyDepositStore *edStore)
 
CexmcChargeExchangeReconstructor(const CexmcProductionModel *productionModel)
 
void Reconstruct(const CexmcEnergyDepositStore *edStore)
 
G4bool hasMassCutTriggered
 
G4bool useAbsorbedEnergyCut
 
G4bool collectEDInAdjacentCrystals
 
G4double nucleusOutputParticleMass
 
G4bool HasFullTrigger(void) const 
 
G4ParticleDefinition * GetOutputParticle(void) const 
 
void ReconstructTargetPoint(void)
 
G4ThreeVector calorimeterEPRightWorldPosition
 
static G4RunManager * GetRunManager()
 
G4bool beamParticleIsInitialized
 
G4double massCutNOPCenter
 
G4double GetPDGMass() const 
 
CexmcParticleGun * particleGun
 
G4double absorbedEnergyCutCLWidth
 
G4bool hasAbsorbedEnergyCutTriggered
 
G4ParticleDefinition * GetNucleusParticle(void) const 
 
CexmcProductionModelData productionModelData
 
G4ParticleDefinition * GetParticleDefinition() const 
 
CexmcParticleGun * GetParticleGun(void)
 
G4double absorbedEnergyCutCLCenter
 
G4ParticleDefinition * GetNucleusOutputParticle(void) const 
 
const G4ParticleDefinition * nucleusOutputParticle
 
const G4ThreeVector & GetOrigDirection(void) const 
 
CexmcEDCollectionAlgoritm edCollectionAlgorithm
 
G4double absorbedEnergyCutCRWidth
 
G4double outputParticleMass
 
G4LorentzVector nucleusParticleSCM
 
CLHEP::HepLorentzVector G4LorentzVector
 
G4double calorimeterEDRightAdjacent