Message: Re: Discrepancy in the number of optical photons produced by low energy charged particles in scintillator Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Feedback Re: Discrepancy in the number of optical photons produced by low energy charged particles in scintillator 

Forum: Processes Involving Optical Photons
Re: Question Discrepancy in the number of optical photons produced by low energy charged particles in scintillator (John McFee)
Date: 13 Apr, 2017
From: Gumplinger Peter <Gumplinger Peter>

Hi John,

> The code is
> modified from OpNovice with modifications to allow particle-dependent
> scintillation yields. It seems to work well except for one thing which
> is puzzling me.

>   fScintillationProcessProton->SetScintillationByParticleType(true);
>   fScintillationProcessProton->SetScintillationYieldFactor(1.0);
>   fScintillationProcessProton->SetScintillationExcitationRatio(0.80);
>   ...

> 
> In OpNoviceDetectorConstruction.cc I have these lines for protons:
> 
>      G4double energies_proton[NE213_NUMENTRIES_YIELD] = {0.10*MeV, 0.13*MeV, 0.17*MeV, 0.20*MeV, 0.24*MeV, 0.30*MeV, 0.34*MeV, 0.40*MeV, 0.48*MeV, 0.60*MeV, 0.72*MeV, 0.84*MeV, 1.00*MeV, 1.30*MeV, 1.70*MeV, 2.00*MeV, 2.40*MeV, 3.00*MeV, 3.40*MeV, 4.00*MeV, 4.80*MeV, 6.00*MeV, 7.20*MeV, 8.40*MeV, 10.00*MeV, 13.00*MeV, 17.00*MeV, 20.00*MeV, 24.00*MeV, 30.00*MeV, 34.00*MeV, 40.00*MeV};
> 
>      G4double yield_proton[NE213_NUMENTRIES_YIELD] = {87., 114., 156., 189., 237., 317., 374., 471., 623., 875., 1174., 1516., 2015., 3077., 4721., 6095., 8063., 11171., 13442., 17118., 22162., 29799., 38055., 46698., 58695., 82044., 113907., 139320., 174150., 228330., 264450., 319920.};
> 
>      NE213_mt->AddProperty("PROTONSCINTILLATIONYIELD", energies_proton, yield_proton, NE213_NUMENTRIES_YIELD); 

> I have set Birks constant by :
>      NE213->GetIonisation()->SetBirksConstant(0.137*mm/MeV);

Birk's correction via fEmSaturation and specifying scintillation by particle type are physically mutually exclusive!

In the code of G4Scintillation.cc:

        if (fScintillationByParticleType)
           MeanNumberOfPhotons = ScintillationYield;
        else if (fEmSaturation)
           MeanNumberOfPhotons = ScintillationYield*
             (fEmSaturation->VisibleEnergyDepositionAtAStep(&aStep));
        else
           MeanNumberOfPhotons = ScintillationYield*TotalEnergyDeposit;

        if (MeanNumberOfPhotons > 10.)
        {
          G4double sigma = ResolutionScale * std::sqrt(MeanNumberOfPhotons);
          fNumPhotons=G4int(G4RandGauss::shoot(MeanNumberOfPhotons,sigma)+0.5);
        }
        else
        {
          fNumPhotons = G4int(G4Poisson(MeanNumberOfPhotons));
        }

> (but I've also used a zero Birks constant and it made no difference).

Also, you'd need to add:

G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation();

fScintillationProcessProton->AddSaturation(emSaturation);

in your PhysicsList.

Why do you have:

fScintillationProcessProton->SetScintillationExcitationRatio(0.80);

Do you have defined a fast and a slow scintillation component?

I don't know why you are only seeing 20% of the yield. You can debug this by looking at what happens in the G4Scintillation code fragment shown above and in the code of GetScintillationYieldByParticleType routine. (I assume you have access to the G4 code).

Perhaps, modify your user code and use G4OpticalPhysics instead to define the G4ScintillationProcess (only one process, not one process for each particle type).

Peter

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 More: Re: Discrepancy in the number of optical photons produced by low energy charged particles in scintillator   (John McFee - 14 Apr, 2017)
 Add Message Add Message
to: "Re: Discrepancy in the number of optical photons produced by low energy charged particles in scintillator"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews