225 G4AdjointCSManager::GetAdjointCSManager();
227 G4AdjointSimManager::GetInstance();
229 theCSManager->RegisterAdjointParticle(
230 G4AdjointElectron::AdjointElectron());
233 theCSManager->RegisterAdjointParticle(
234 G4AdjointGamma::AdjointGamma());
244 theCSManager->RegisterAdjointParticle(
245 G4AdjointProton::AdjointProton());
264 theeminusMS->SetEmModel(msc1);
267 theeminusAdjointMS->SetEmModel(msc2);
280 theeInverseIonisationModel->SetHighEnergyLimit(
282 theeInverseIonisationModel->SetLowEnergyLimit(
284 theeInverseIonisationModel->SetCSBiasingFactor(
286 theeInverseIonisationProjToProjCase =
288 theeInverseIonisationModel);
289 theeInverseIonisationProdToProjCase =
291 theeInverseIonisationModel);
292 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"e-"));
305 theeInverseBremsstrahlungModel->SetCSBiasingFactor(
308 true,
"Inv_eBrem",theeInverseBremsstrahlungModel);
310 false,
"Inv_eBrem1",theeInverseBremsstrahlungModel);
311 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"e-"));
312 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"gamma"));
316 theeInverseBremsstrahlungModel);
317 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"e-"));
318 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"gamma"));
320 theForcedInteractionForGamma =
322 theForcedInteractionForGamma->RegisterAdjointBremModel(
323 theeInverseBremsstrahlungModel);
339 theeInverseComptonModel->SetDirectProcess(theComptonScattering);
340 theeInverseComptonModel->SetUseMatrix(
false);
346 theeInverseComptonModel);
348 if (!theForcedInteractionForGamma ) theForcedInteractionForGamma =
350 theForcedInteractionForGamma->
351 RegisterAdjointComptonModel(theeInverseComptonModel);
353 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"e-"));
354 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"gamma"));
366 theInversePhotoElectricModel->SetCSBiasingFactor(
369 theInversePhotoElectricModel);
370 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"e-"));
371 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"gamma"));
385 thepInverseIonisationModel->SetUseMatrix(
false);
387 "Inv_pIon",thepInverseIonisationModel);
389 "Inv_pIon1",thepInverseIonisationModel);
390 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"e-"));
391 theAdjointSimManager->ConsiderParticleAsPrimary(
G4String(
"proton"));
396 auto particleIterator=GetParticleIterator();
397 particleIterator->reset();
398 while( (*particleIterator)() ){
403 particle->SetProcessManager(pmanager);
406 G4String particleName = particle->GetParticleName();
407 if (particleName ==
"e-") {
411 G4AdjointCSManager::GetAdjointCSManager()->
415 pmanager->AddProcess(theeminusBremsstrahlung);
416 G4AdjointCSManager::GetAdjointCSManager()->
417 RegisterEnergyLossProcess(theeminusBremsstrahlung,particle);
422 pmanager->SetProcessOrdering(theeminusMS, idxAlongStep,n_order);
430 pmanager->SetProcessOrdering(theeminusBremsstrahlung,
431 idxAlongStep,n_order);
436 pmanager->SetProcessOrdering(theeminusMS,idxPostStep,n_order);
444 pmanager->SetProcessOrdering(theeminusBremsstrahlung,idxPostStep,
449 if (particleName ==
"adj_e-") {
453 theContinuousGainOfEnergy->SetLossFluctuations(
455 theContinuousGainOfEnergy->SetDirectEnergyLossProcess(
457 theContinuousGainOfEnergy->SetDirectParticle(G4Electron::Electron());
458 pmanager->AddProcess(theContinuousGainOfEnergy);
463 pmanager->AddProcess(theeminusAdjointMS);
464 pmanager->SetProcessOrdering(theeminusAdjointMS,
465 idxAlongStep,n_order);
468 pmanager->SetProcessOrdering(theContinuousGainOfEnergy,idxAlongStep,
474 pmanager->AddProcess(theAlongStepWeightCorrection);
475 pmanager->SetProcessOrdering(theAlongStepWeightCorrection,
480 pmanager->AddProcess(theeInverseIonisationProjToProjCase);
481 pmanager->AddProcess(theeInverseIonisationProdToProjCase);
483 pmanager->SetProcessOrdering(theeInverseIonisationProjToProjCase,
484 idxPostStep,n_order);
486 pmanager->SetProcessOrdering(theeInverseIonisationProdToProjCase,
487 idxPostStep,n_order);
490 pmanager->AddProcess(theeInverseBremsstrahlungProjToProjCase);
492 pmanager->SetProcessOrdering(
493 theeInverseBremsstrahlungProjToProjCase,
494 idxPostStep,n_order);
498 pmanager->AddProcess(theeInverseComptonProdToProjCase);
500 pmanager->SetProcessOrdering(theeInverseComptonProdToProjCase,
501 idxPostStep,n_order);
504 pmanager->AddDiscreteProcess(theInversePhotoElectricProcess);
506 pmanager->SetProcessOrdering(theInversePhotoElectricProcess,
507 idxPostStep,n_order);
510 pmanager->AddProcess(thepInverseIonisationProdToProjCase);
512 pmanager->SetProcessOrdering(thepInverseIonisationProdToProjCase,
513 idxPostStep,n_order);
517 pmanager->SetProcessOrdering(theeminusAdjointMS,
518 idxPostStep,n_order);
523 if(particleName ==
"adj_gamma") {
528 pmanager->AddProcess(theAlongStepWeightCorrection);
529 pmanager->SetProcessOrdering(theAlongStepWeightCorrection,
533 pmanager->AddProcess(theeInverseBremsstrahlungProdToProjCase);
535 pmanager->SetProcessOrdering(
536 theeInverseBremsstrahlungProdToProjCase,
537 idxPostStep,n_order);
540 pmanager->AddDiscreteProcess(theeInverseComptonProjToProjCase);
542 pmanager->SetProcessOrdering(theeInverseComptonProjToProjCase,
543 idxPostStep,n_order);
547 if (theForcedInteractionForGamma) {
548 pmanager->AddProcess(theForcedInteractionForGamma);
550 pmanager->SetProcessOrdering(theForcedInteractionForGamma,
551 idxPostStep,n_order);
552 pmanager->SetProcessOrdering(theForcedInteractionForGamma,
553 idxAlongStep,n_order);
558 if (particleName ==
"gamma") {
560 pmanager->AddDiscreteProcess(theComptonScattering);
561 G4AdjointCSManager::GetAdjointCSManager()->
562 RegisterEmProcess(theComptonScattering,particle);
565 pmanager->AddDiscreteProcess(thePEEffect);
566 G4AdjointCSManager::GetAdjointCSManager()->
567 RegisterEmProcess(thePEEffect,particle);
570 pmanager->AddDiscreteProcess(theGammaConversion);
581 pmanager->AddProcess(theeplusMultipleScattering);
582 pmanager->AddProcess(theeplusIonisation);
583 pmanager->AddProcess(theeplusBremsstrahlung);
584 pmanager->AddProcess(theeplusAnnihilation);
587 pmanager->SetProcessOrderingToFirst(theeplusAnnihilation, idxAtRest);
590 pmanager->SetProcessOrdering(theeplusMultipleScattering,
592 pmanager->SetProcessOrdering(theeplusIonisation, idxAlongStep,2);
593 pmanager->SetProcessOrdering(theeplusBremsstrahlung,idxAlongStep,3);
596 pmanager->SetProcessOrdering(theeplusMultipleScattering,
598 pmanager->SetProcessOrdering(theeplusIonisation,idxPostStep,2);
599 pmanager->SetProcessOrdering(theeplusBremsstrahlung,idxPostStep,3);
600 pmanager->SetProcessOrdering(theeplusAnnihilation,idxPostStep,4);
607 G4AdjointCSManager::GetAdjointCSManager()->
614 pmanager->SetProcessOrdering(thepMS, idxAlongStep,n_order);
619 pmanager->SetProcessOrdering(
fPIonisation,idxAlongStep,n_order);
625 pmanager->SetProcessOrdering(thepMS, idxPostStep,n_order);
630 pmanager->SetProcessOrdering(
fPIonisation,idxPostStep,n_order);
639 theContinuousGainOfEnergy->SetLossFluctuations(
641 theContinuousGainOfEnergy->SetDirectEnergyLossProcess(
fPIonisation);
642 theContinuousGainOfEnergy->SetDirectParticle(G4Proton::Proton());
643 pmanager->AddProcess(theContinuousGainOfEnergy);
649 pmanager->AddProcess(thepMS);
650 pmanager->SetProcessOrdering(thepMS, idxAlongStep,n_order);
654 pmanager->SetProcessOrdering(theContinuousGainOfEnergy,idxAlongStep,
660 pmanager->AddProcess(theAlongStepWeightCorrection);
661 pmanager->SetProcessOrdering(theAlongStepWeightCorrection,
666 pmanager->AddProcess(thepInverseIonisationProjToProjCase);
668 pmanager->SetProcessOrdering(
669 thepInverseIonisationProjToProjCase,
670 idxPostStep,n_order);
675 pmanager->SetProcessOrdering(thepMS,idxPostStep,n_order);