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