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 );
   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
 
G4double absorbedEnergyCutCRCenter
 
void SetExpectedMomentumAmpDiff(G4double)
 
CLHEP::Hep3Vector G4ThreeVector
 
G4double expectedMomentumAmp
 
G4ParticleDefinition * GetNucleusParticle(void) const
 
G4double GetOrigMomentumAmp(void) const
 
G4double calorimeterEDLeftAdjacent
 
G4double calorimeterEDLeft
 
void SetupBeamParticle(void)
 
G4double absorbedEnergyCutEllipseAngle
 
const G4ParticleDefinition * incidentParticle
 
G4double calorimeterEDRight
 
G4ParticleDefinition * GetOutputParticle(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
 
G4ParticleDefinition * GetIncidentParticle(void) const
 
void ReconstructEntryPoints(const CexmcEnergyDepositStore *edStore)
 
CexmcChargeExchangeReconstructor(const CexmcProductionModel *productionModel)
 
void Reconstruct(const CexmcEnergyDepositStore *edStore)
 
G4bool hasMassCutTriggered
 
HepLorentzVector & boost(double, double, double)
 
G4bool useAbsorbedEnergyCut
 
G4bool collectEDInAdjacentCrystals
 
G4double nucleusOutputParticleMass
 
void ReconstructTargetPoint(void)
 
G4ThreeVector calorimeterEPRightWorldPosition
 
static G4RunManager * GetRunManager()
 
G4bool beamParticleIsInitialized
 
G4double massCutNOPCenter
 
const G4ThreeVector & GetOrigDirection(void) const
 
G4ParticleDefinition * GetNucleusOutputParticle(void) const
 
CexmcParticleGun * particleGun
 
G4double absorbedEnergyCutCLWidth
 
G4bool hasAbsorbedEnergyCutTriggered
 
G4double GetPDGMass() const
 
Hep3Vector boostVector() const
 
const G4VUserPrimaryGeneratorAction * GetUserPrimaryGeneratorAction() const
 
CexmcProductionModelData productionModelData
 
CexmcParticleGun * GetParticleGun(void)
 
G4double absorbedEnergyCutCLCenter
 
const G4ParticleDefinition * nucleusOutputParticle
 
CexmcEDCollectionAlgoritm edCollectionAlgorithm
 
G4bool HasFullTrigger(void) const
 
G4ParticleDefinition * GetParticleDefinition() const
 
G4double absorbedEnergyCutCRWidth
 
G4double outputParticleMass
 
G4LorentzVector nucleusParticleSCM
 
CLHEP::HepLorentzVector G4LorentzVector
 
G4double calorimeterEDRightAdjacent