Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-31 09:21:49

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 /*
0027  * =============================================================================
0028  *
0029  *       Filename:  CexmcChargeExchangeReconstructor.hh
0030  *
0031  *    Description:  charge exchange reconstructor
0032  *
0033  *        Version:  1.0
0034  *        Created:  02.12.2009 15:07:16
0035  *       Revision:  none
0036  *       Compiler:  gcc
0037  *
0038  *         Author:  Alexey Radkov (), 
0039  *        Company:  PNPI
0040  *
0041  * =============================================================================
0042  */
0043 
0044 #ifndef CEXMC_CHARGE_EXCHANGE_RECONSTRUCTOR_HH
0045 #define CEXMC_CHARGE_EXCHANGE_RECONSTRUCTOR_HH
0046 
0047 #include "CexmcReconstructor.hh"
0048 #include "CexmcProductionModelData.hh"
0049 #include "CexmcCommon.hh"
0050 
0051 class  CexmcChargeExchangeReconstructorMessenger;
0052 struct  CexmcEnergyDepositStore;
0053 class  CexmcProductionModel;
0054 class  CexmcParticleGun;
0055 
0056 
0057 class  CexmcChargeExchangeReconstructor : public CexmcReconstructor
0058 {
0059     public:
0060         CexmcChargeExchangeReconstructor(
0061                                 const CexmcProductionModel *  productionModel );
0062 
0063         ~CexmcChargeExchangeReconstructor();
0064 
0065     public:
0066         void  Reconstruct( const CexmcEnergyDepositStore *  edStore );
0067 
0068     public:
0069         G4double  GetOutputParticleMass( void ) const;
0070 
0071         G4double  GetNucleusOutputParticleMass( void ) const;
0072 
0073         const CexmcProductionModelData &  GetProductionModelData( void ) const;
0074 
0075         void      UseTableMass( G4bool  on );
0076 
0077         void      UseMassCut( G4bool  on );
0078 
0079         void      SetMassCutOPCenter( G4double  value );
0080 
0081         void      SetMassCutNOPCenter( G4double  value );
0082 
0083         void      SetMassCutOPWidth( G4double  value );
0084 
0085         void      SetMassCutNOPWidth( G4double  value );
0086 
0087         void      SetMassCutEllipseAngle( G4double  value );
0088 
0089         void      UseAbsorbedEnergyCut( G4bool  on );
0090 
0091         void      SetAbsorbedEnergyCutCLCenter( G4double  value );
0092 
0093         void      SetAbsorbedEnergyCutCRCenter( G4double  value );
0094 
0095         void      SetAbsorbedEnergyCutCLWidth( G4double  value );
0096 
0097         void      SetAbsorbedEnergyCutCRWidth( G4double  value );
0098 
0099         void      SetAbsorbedEnergyCutEllipseAngle( G4double  value );
0100 
0101         void      SetExpectedMomentumAmp( G4double );
0102 
0103         void      SetExpectedMomentumAmpDiff( G4double );
0104 
0105         void      SetEDCollectionAlgorithm( CexmcEDCollectionAlgoritm  value );
0106 
0107         void      SetupBeamParticle( void );
0108 
0109         G4bool    IsTableMassUsed( void ) const;
0110 
0111         G4bool    IsMassCutUsed( void ) const;
0112 
0113         G4double  GetMassCutOPCenter( void ) const;
0114 
0115         G4double  GetMassCutNOPCenter( void ) const;
0116 
0117         G4double  GetMassCutOPWidth( void ) const;
0118 
0119         G4double  GetMassCutNOPWidth( void ) const;
0120 
0121         G4double  GetMassCutEllipseAngle( void ) const;
0122 
0123         G4bool    HasMassCutTriggered( void ) const;
0124 
0125         G4bool    IsAbsorbedEnergyCutUsed( void ) const;
0126 
0127         G4double  GetAbsorbedEnergyCutCLCenter( void ) const;
0128 
0129         G4double  GetAbsorbedEnergyCutCRCenter( void ) const;
0130 
0131         G4double  GetAbsorbedEnergyCutCLWidth( void ) const;
0132 
0133         G4double  GetAbsorbedEnergyCutCRWidth( void ) const;
0134 
0135         G4double  GetAbsorbedEnergyCutEllipseAngle( void ) const;
0136 
0137         G4double  GetExpectedMomentumAmp( void ) const;
0138 
0139         CexmcEDCollectionAlgoritm  GetEDCollectionAlgorithm( void ) const;
0140 
0141         G4bool    HasAbsorbedEnergyCutTriggered( void ) const;
0142 
0143         G4bool    HasFullTrigger( void ) const;
0144 
0145     private:
0146         G4double                   outputParticleMass;
0147 
0148         G4double                   nucleusOutputParticleMass;
0149 
0150     private:
0151         CexmcProductionModelData   productionModelData;
0152 
0153     private:
0154         G4bool                     useTableMass;
0155 
0156         G4bool                     useMassCut;
0157 
0158         G4double                   massCutOPCenter;
0159 
0160         G4double                   massCutNOPCenter;
0161 
0162         G4double                   massCutOPWidth;
0163 
0164         G4double                   massCutNOPWidth;
0165 
0166         G4double                   massCutEllipseAngle;
0167 
0168         G4bool                     useAbsorbedEnergyCut;
0169 
0170         G4double                   absorbedEnergyCutCLCenter;
0171 
0172         G4double                   absorbedEnergyCutCRCenter;
0173 
0174         G4double                   absorbedEnergyCutCLWidth;
0175 
0176         G4double                   absorbedEnergyCutCRWidth;
0177 
0178         G4double                   absorbedEnergyCutEllipseAngle;
0179 
0180         G4double                   expectedMomentumAmp;
0181 
0182         CexmcEDCollectionAlgoritm  edCollectionAlgorithm;
0183 
0184     private:
0185         G4bool                     hasMassCutTriggered;
0186 
0187         G4bool                     hasAbsorbedEnergyCutTriggered;
0188 
0189     private:
0190         G4bool                                       beamParticleIsInitialized;
0191 
0192         CexmcParticleGun *                           particleGun;
0193 
0194         CexmcChargeExchangeReconstructorMessenger *  messenger;
0195 };
0196 
0197 
0198 inline G4double  CexmcChargeExchangeReconstructor::GetOutputParticleMass(
0199                                                                     void ) const
0200 {
0201     return outputParticleMass;
0202 }
0203 
0204 
0205 inline G4double  CexmcChargeExchangeReconstructor::GetNucleusOutputParticleMass(
0206                                                                     void ) const
0207 {
0208     return nucleusOutputParticleMass;
0209 }
0210 
0211 
0212 inline const CexmcProductionModelData &
0213         CexmcChargeExchangeReconstructor::GetProductionModelData( void ) const
0214 {
0215     return productionModelData;
0216 }
0217 
0218 
0219 inline void  CexmcChargeExchangeReconstructor::UseTableMass( G4bool  on )
0220 {
0221     useTableMass = on;
0222 }
0223 
0224 
0225 inline void  CexmcChargeExchangeReconstructor::UseMassCut( G4bool  on )
0226 {
0227     useMassCut = on;
0228 }
0229 
0230 
0231 inline void  CexmcChargeExchangeReconstructor::SetMassCutOPCenter(
0232                                                             G4double  value )
0233 {
0234     massCutOPCenter = value;
0235 }
0236 
0237 
0238 inline void  CexmcChargeExchangeReconstructor::SetMassCutNOPCenter(
0239                                                             G4double  value )
0240 {
0241     massCutNOPCenter = value;
0242 }
0243 
0244 
0245 inline void  CexmcChargeExchangeReconstructor::SetMassCutOPWidth(
0246                                                             G4double  value )
0247 {
0248     massCutOPWidth = value;
0249 }
0250 
0251 
0252 inline void  CexmcChargeExchangeReconstructor::SetMassCutNOPWidth(
0253                                                             G4double  value )
0254 {
0255     massCutNOPWidth = value;
0256 }
0257 
0258 
0259 inline void  CexmcChargeExchangeReconstructor::SetMassCutEllipseAngle(
0260                                                             G4double  value )
0261 {
0262     massCutEllipseAngle = value;
0263 }
0264 
0265 
0266 inline void  CexmcChargeExchangeReconstructor::UseAbsorbedEnergyCut(
0267                                                                 G4bool  on )
0268 {
0269     useAbsorbedEnergyCut = on;
0270 }
0271 
0272 
0273 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCLCenter(
0274                                                             G4double  value )
0275 {
0276     absorbedEnergyCutCLCenter = value;
0277 }
0278 
0279 
0280 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCRCenter(
0281                                                             G4double  value )
0282 {
0283     absorbedEnergyCutCRCenter = value;
0284 }
0285 
0286 
0287 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCLWidth(
0288                                                             G4double  value )
0289 {
0290     absorbedEnergyCutCLWidth = value;
0291 }
0292 
0293 
0294 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutCRWidth(
0295                                                             G4double  value )
0296 {
0297     absorbedEnergyCutCRWidth = value;
0298 }
0299 
0300 
0301 inline void  CexmcChargeExchangeReconstructor::SetAbsorbedEnergyCutEllipseAngle(
0302                                                             G4double  value )
0303 {
0304     absorbedEnergyCutEllipseAngle = value;
0305 }
0306 
0307 
0308 inline void  CexmcChargeExchangeReconstructor::SetExpectedMomentumAmp(
0309                                                             G4double  value )
0310 {
0311     expectedMomentumAmp = value;
0312 }
0313 
0314 
0315 inline void  CexmcChargeExchangeReconstructor::SetEDCollectionAlgorithm(
0316                                             CexmcEDCollectionAlgoritm  value )
0317 {
0318     edCollectionAlgorithm = value;
0319 }
0320 
0321 
0322 inline G4bool  CexmcChargeExchangeReconstructor::IsTableMassUsed( void ) const
0323 {
0324     return useTableMass;
0325 }
0326 
0327 
0328 inline G4bool  CexmcChargeExchangeReconstructor::IsMassCutUsed( void ) const
0329 {
0330     return useMassCut;
0331 }
0332 
0333 
0334 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutOPCenter( void )
0335                                                                         const
0336 {
0337     return massCutOPCenter;
0338 }
0339 
0340 
0341 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutNOPCenter( void )
0342                                                                         const
0343 {
0344     return massCutNOPCenter;
0345 }
0346 
0347 
0348 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutOPWidth( void )
0349                                                                         const
0350 {
0351     return massCutOPWidth;
0352 }
0353 
0354 
0355 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutNOPWidth( void )
0356                                                                         const
0357 {
0358     return massCutNOPWidth;
0359 }
0360 
0361 
0362 inline G4double  CexmcChargeExchangeReconstructor::GetMassCutEllipseAngle(
0363                                                                     void ) const
0364 {
0365     return massCutEllipseAngle;
0366 }
0367 
0368 
0369 inline G4bool  CexmcChargeExchangeReconstructor::HasMassCutTriggered( void )
0370                                                                         const
0371 {
0372     return hasMassCutTriggered;
0373 }
0374 
0375 
0376 inline G4bool  CexmcChargeExchangeReconstructor::IsAbsorbedEnergyCutUsed( void )
0377                                                                         const
0378 {
0379     return useAbsorbedEnergyCut;
0380 }
0381 
0382 
0383 inline G4double  CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCLCenter(
0384                                                                     void ) const
0385 {
0386     return absorbedEnergyCutCLCenter;
0387 }
0388 
0389 
0390 inline G4double  CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCRCenter(
0391                                                                     void ) const
0392 {
0393     return absorbedEnergyCutCRCenter;
0394 }
0395 
0396 
0397 inline G4double  CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCLWidth(
0398                                                                     void ) const
0399 {
0400     return absorbedEnergyCutCLWidth;
0401 }
0402 
0403 
0404 inline G4double  CexmcChargeExchangeReconstructor::GetAbsorbedEnergyCutCRWidth(
0405                                                                     void ) const
0406 {
0407     return absorbedEnergyCutCRWidth;
0408 }
0409 
0410 
0411 inline G4double  CexmcChargeExchangeReconstructor::
0412                                 GetAbsorbedEnergyCutEllipseAngle( void ) const
0413 {
0414     return absorbedEnergyCutEllipseAngle;
0415 }
0416 
0417 
0418 inline G4double  CexmcChargeExchangeReconstructor::GetExpectedMomentumAmp(
0419                                                                     void ) const
0420 {
0421     return expectedMomentumAmp;
0422 }
0423 
0424 
0425 inline CexmcEDCollectionAlgoritm  CexmcChargeExchangeReconstructor::
0426                                 GetEDCollectionAlgorithm( void ) const
0427 {
0428     return edCollectionAlgorithm;
0429 }
0430 
0431 
0432 inline G4bool  CexmcChargeExchangeReconstructor::HasAbsorbedEnergyCutTriggered(
0433                                                                     void ) const
0434 {
0435     return hasAbsorbedEnergyCutTriggered;
0436 }
0437 
0438 
0439 #endif
0440