71   :outputFileName(
"xrayfluo"), phaseSpaceFlag(false), physicFlag (false), 
    72    gunParticleEnergies(0), gunParticleTypes(0)
    81   G4AnalysisManager::Instance();
    98   delete G4AnalysisManager::Instance();  
   143     man->
CreateH1(
"h1",
"Energy Deposit", 500,0.,10.); 
   144     man->
CreateH1(
"h2",
"Gamma born in the sample", 100,0.,10.);
   145     man->
CreateH1(
"h3",
"Electrons  born in the sample", 100,0.,10.);
   146     man->
CreateH1(
"h4",
"Gammas leaving the sample", 300,0.,10.);
   147     man->
CreateH1(
"h5",
"Electrons leaving the sample ",200000 ,0.,10.0); 
   148     man->
CreateH1(
"h6",
"Gammas reaching the detector", 100,0.,10.);
   149     man->
CreateH1(
"h7",
"Spectrum of the incident particles", 100,0.,10.);
   150     man->
CreateH1(
"h8",
"Protons reaching the detector", 100,0.,10.);
   151     man->
CreateH1(
"h9",
"Protons leaving the sample", 100,0.,10.);
   177   G4int particleID, processID;
   185       if (raileighFlag ^ (!raileighFlag && (processID == 1 || 
   191       else if (particleID == 0)
   206   std::pair<G4double,G4String> result;
   213       result.second = 
name;
   255     G4int isBornInTheSample=0;
   259     if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()==
"Sample"){
   260       G4ThreeVector creationPos = aStep->GetTrack()->GetVertexPosition();
   270             (aStep->GetPostStepPoint()->GetStepStatus() == fGeomBoundary) 
   274       particleType = aStep->GetTrack()->GetDynamicParticle()->GetDefinition();
   275       momentum = aStep->GetTrack()->GetDynamicParticle()->GetMomentum();
   276       particleEnergy = aStep->GetPreStepPoint()->GetKineticEnergy();
   277       if (creationPosVolume->
GetName() == 
"Sample" ) {
   278         isBornInTheSample = 1;
   289       if(aStep->GetTrack()->GetCreatorProcess())
   291           parentProcess = aStep->GetTrack()->GetCreatorProcess()->GetProcessName();
   294           if (parentProcess == 
"") parent = 0;
   295           if (parentProcess == 
"ioni") parent = 1;
   296           if (parentProcess == 
"LowEnPhotoElec") parent = 2;
   297           if (parentProcess == 
"Transportation") parent = 3;
   298           if (parentProcess == 
"initStep") parent = 4;
   301         parentProcess = 
"Not Known -- (primary generator + Rayleigh)";
   305       if(aStep->GetTrack()){
   306         sampleMaterial = aStep->GetTrack()->GetMaterial()->GetName();
   307         if (sampleMaterial == (
"Dolorite" || 
"Anorthosite" || 
"Mars1" || 
"IceBasalt" || 
"HPGe")) sampleMat=1;
   337       if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()==
"Sample"){
   339     if(aStep->GetTrack()->GetNextVolume()->GetName() == 
"World" ) { 
   341       if ((aStep->GetTrack()->GetDynamicParticle()
   346         aStep->GetPreStepPoint()->GetKineticEnergy();
   350       else if ((aStep->GetTrack()->GetDynamicParticle()
   354         aStep->GetPreStepPoint()->GetKineticEnergy();
   357       else if ((aStep->GetTrack()->GetDynamicParticle()
   361         protonsLeavSam = aStep->GetPreStepPoint()->GetKineticEnergy();
   367       if((aStep->GetTrack()->GetDynamicParticle()
   370       if(aStep->GetTrack()->GetCurrentStepNumber() == 1)
   372           if(aStep->GetTrack()->GetParentID() != 0)
   374           if(aStep->GetTrack()->GetVolume()->GetName() == 
"Sample")
   377             aStep->GetPreStepPoint()->GetKineticEnergy();
   383       else if ((aStep->GetTrack()->GetDynamicParticle()
   386       if(aStep->GetTrack()->GetCurrentStepNumber() == 1)
   388           if(aStep->GetTrack()->GetParentID() != 0)
   390           if(aStep->GetTrack()->GetVolume()->GetName() == 
"Sample")
   393             aStep->GetPreStepPoint()->GetKineticEnergy();
   401       if(aStep->GetTrack()->GetNextVolume())
   405       if(aStep->GetTrack()->GetNextVolume()->GetName() == 
"HPGeDetector")
   408           if ((aStep->GetTrack()->GetDynamicParticle()
   413             aStep->GetPreStepPoint()->GetKineticEnergy();
   416           else if ((aStep->GetTrack()->GetDynamicParticle()
   420             aStep->GetPreStepPoint()->GetKineticEnergy();
   421           man->
FillH1(8,protonsAtTheDetPre);
 
G4int CreateNtupleIColumn(const G4String &name)
 
G4bool SetFirstHistoId(G4int firstId)
 
tools::rroot::ntuple * GetNtuple() const
 
G4int CreateH1(const G4String &name, const G4String &title, G4int nbins, G4double xmin, G4double xmax, const G4String &unitName="none", const G4String &fcnName="none", const G4String &binSchemeName="linear")
 
static XrayFluoAnalysisManager * instance
 
CLHEP::Hep3Vector G4ThreeVector
 
void SetPhysicFlag(G4bool)
 
void analyseStepping(const G4Step *aStep)
 
void SetVerboseLevel(G4int verboseLevel)
 
static G4Electron * Definition()
 
G4int CreateNtuple(const G4String &name, const G4String &title)
 
G4bool SetNtupleDColumn(const G4String &columnName, G4double &value)
 
const std::pair< G4double, G4String > GetEmittedParticleEnergyAndType()
 
virtual ~XrayFluoAnalysisManager()
 
static XrayFluoDetectorConstruction * GetInstance()
 
G4bool OpenFile(const G4String &fileName="")
 
#define G4MUTEX_INITIALIZER
 
void LoadGunData(G4String, G4bool)
 
G4bool SetNtupleIColumn(const G4String &columnName, G4int &value)
 
void analysePrimaryGenerator(G4double energy)
 
static G4Proton * Definition()
 
G4bool FillNtupleIColumn(G4int id, G4int value)
 
G4GLOB_DLL std::ostream G4cout
 
G4bool FillNtupleDColumn(G4int id, G4double value)
 
static XrayFluoAnalysisManager * getInstance()
 
std::vector< G4double > * gunParticleEnergies
 
G4int fParticleEnergyAndTypeIndex
 
G4bool SetFirstNtupleId(G4int firstId)
 
const G4String & GetName() const
 
G4bool FillH1(G4int id, G4double value, G4double weight=1.0)
 
std::vector< G4String > * gunParticleTypes
 
XrayFluoAnalysisManager()
 
virtual G4VPhysicalVolume * LocateGlobalPointAndSetup(const G4ThreeVector &point, const G4ThreeVector *direction=0, const G4bool pRelativeSearch=true, const G4bool ignoreDirection=true)
 
void SetOutputFileName(G4String)
 
void SetVerboseLevel(G4int verboseLevel)
 
XrayFluoAnalysisMessenger * analisysMessenger
 
G4int CreateNtupleDColumn(const G4String &name)
 
void analyseEnergyDep(G4double eDep)
 
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
 
G4LogicalVolume * GetLogicalVolume() const
 
G4VSolid * GetSolid() const
 
static G4Gamma * Definition()
 
G4Navigator * GetGeometryNavigator() const