Links

Content Skeleton

This Page

Previous topic

DetSim G4Scintillation

Next topic

DetSim DsConsOptical

DetSim DsG4Scintillation

Observations

  1. DsG4Scintillation is applicable to OpticalPhotons (presumably for reemission handling), unlike G4Scintillation
    • hmm, maybe handling re-emission as separate process might be a more effcient way ?
    • how big does the re-emission tree get ?

Applicable to OP (Reemission)

Applicable to OP and all:

300 inline
301 G4bool DsG4Scintillation::IsApplicable(const G4ParticleDefinition& aParticleType)
302 {
303         if (aParticleType.GetParticleName() == "opticalphoton"){
304            return true;
305         } else {
306            return true;
307         }
308 }

Default is doScintAndCeren

  • DoBoth=true means doReemissionForOpticalPhotonsFromScintAndCeren
  • DoBoth=false means doReemissionForOpticalPhotonsFromCeren
delta:src blyth$ grep DoBothProcess *.*
DsG4Scintillation.h:        void SetDoBothProcess(bool tf = true) { doBothProcess = tf; }
DsG4Scintillation.h:        bool GetDoBothProcess() { return doBothProcess; }
DsPhysConsOptical.cc:    scint->SetDoBothProcess(m_doScintAndCeren);
delta:src blyth$

Constants

246     if (aParticleName == "opticalphoton") {
247       FastTimeConstant = "ReemissionFASTTIMECONSTANT";
248       SlowTimeConstant = "ReemissionSLOWTIMECONSTANT";
249       strYieldRatio = "ReemissionYIELDRATIO";
250     }

Reemitted property set in TrackInfo

685             G4Track* aSecondaryTrack =
686                 new G4Track(aScintillationPhoton,aSecondaryTime,aSecondaryPosition);
687
688             G4CompositeTrackInfo* comp=new G4CompositeTrackInfo();
689             DsPhotonTrackInfo* trackinf=new DsPhotonTrackInfo();
690             if ( flagReemission ){
691                 if ( reemittedTI ) *trackinf = *reemittedTI;
692                 trackinf->SetReemitted();
693             }
694             else if ( fApplyPreQE ) {
695                 trackinf->SetMode(DsPhotonTrackInfo::kQEPreScale);
696                 trackinf->SetQE(fPreQE);
697             }
698             comp->SetPhotonTrackInfo(trackinf);
699             aSecondaryTrack->SetUserInformation(comp);
///
/// parentage
704
705             aSecondaryTrack->SetParentID(aTrack.GetTrackID());
706
707             // add the secondary to the ParticleChange object
708             aParticleChange.SetSecondaryWeightByProcess( true ); // recommended
709             aParticleChange.AddSecondary(aSecondaryTrack);