Import Geant4 11.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2021-12-10 14:46:44 +01:00
committed by Ben Morgan
parent 6399a014b6
commit 80e2389dd8
3932 changed files with 202519 additions and 246221 deletions
+17 -1
View File
@@ -1,4 +1,3 @@
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
@@ -16,6 +15,23 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
October 7th, 2021 I. Hrivnacova (detutil-V10-07-06)
- Updated G4TScoreNtupleWriter for changes in the analysis category:
added fDefaultFileType (with default value "root") and its setter
September 27th, 2021 M. Asai (detutil-V10-07-05)
- Fix indexing of cylindrical scoring mesh commands.
Co-working with detscorer-V10-07-01. Addressing to bug report #2418.
August 23rd, 2021 M. Asai (detutil-V10-07-04)
- G4VScoringMesh : Correct the warning messages when the size or number
of bins have already been set but tried to change.
July 22nd, 2021 I. Hrivnacova (detutil-V10-07-03)
- Updated G4TScoreNtupleWriter for changes in the analysis category:
removed deleting of the analysis manager,
as this is now done by the Geant4 kernel.
April 15th, 2021 M. Asai (detutil-V10-07-02)
- Making sure probe commands are not unnecessarily broadcasted to
the worker threads.
@@ -53,8 +53,9 @@ class G4ScoringCylinder : public G4VScoringMesh
virtual void DrawColumn(RunScore* map, G4VScoreColorMap* colorMap,
G4int idxProj, G4int idxColumn);
void SetRMax(G4double rMax) { fSize[0] = rMax; }
void SetZSize(G4double zSize) { fSize[1] = zSize; } // half height
void SetRMin(G4double rMin) { fSize[0] = rMin; }
void SetRMax(G4double rMax) { fSize[1] = rMax; }
void SetZSize(G4double zSize) { fSize[2] = zSize; } // half height
void RegisterPrimitives(std::vector<G4VPrimitiveScorer*>& vps);
@@ -68,6 +68,7 @@ class G4TScoreNtupleWriter : public G4VScoreNtupleWriter
virtual void Write();
// set methods
void SetDefaultFileType(const G4String& value);
void SetFileName(const G4String& fileName);
void SetVerboseLevel(G4int value);
@@ -87,9 +88,9 @@ class G4TScoreNtupleWriter : public G4VScoreNtupleWriter
G4TScoreNtupleWriterMessenger<T>* fMessenger;
std::vector<G4int> fHCIds;
T* fAnalysisManager;
G4String fDefaultFileType;
G4String fFileName;
G4int fVerboseLevel;
G4bool fHasAnalysisManager;
G4bool fHasAnalysisFile;
G4bool fIsBooked;
G4bool fIsInitialized;
@@ -43,9 +43,9 @@ G4TScoreNtupleWriter<T>::G4TScoreNtupleWriter()
, fMessenger(nullptr)
, fHCIds()
, fAnalysisManager(nullptr)
, fDefaultFileType("root")
, fFileName("scoring")
, fVerboseLevel(1)
, fHasAnalysisManager(false)
, fHasAnalysisFile(false)
, fIsBooked(false)
, fIsInitialized(false)
@@ -61,11 +61,6 @@ G4TScoreNtupleWriter<T>::G4TScoreNtupleWriter()
template <typename T>
G4TScoreNtupleWriter<T>::~G4TScoreNtupleWriter()
{
if(fHasAnalysisManager)
{
delete fAnalysisManager;
}
delete fMessenger;
}
@@ -80,11 +75,10 @@ void G4TScoreNtupleWriter<T>::CreateAnalysisManager()
if(fAnalysisManager)
return;
// create analysis manager
if(!T::IsInstance())
fHasAnalysisManager = true;
// create/get analysis manager
fAnalysisManager = T::Instance();
fAnalysisManager->SetDefaultFileType(fDefaultFileType);
fAnalysisManager->SetVerboseLevel(fVerboseLevel);
}
@@ -322,12 +316,12 @@ void G4TScoreNtupleWriter<T>::Write()
//_____________________________________________________________________________
template <typename T>
void G4TScoreNtupleWriter<T>::SetVerboseLevel(G4int value)
void G4TScoreNtupleWriter<T>::SetDefaultFileType(const G4String& value)
{
fVerboseLevel = value;
fDefaultFileType = value;
if(fAnalysisManager)
{
fAnalysisManager->SetVerboseLevel(value);
fAnalysisManager->SetDefaultFileType(value);
}
}
@@ -337,3 +331,14 @@ void G4TScoreNtupleWriter<T>::SetFileName(const G4String& fileName)
{
fFileName = fileName;
}
//_____________________________________________________________________________
template <typename T>
void G4TScoreNtupleWriter<T>::SetVerboseLevel(G4int value)
{
fVerboseLevel = value;
if(fAnalysisManager)
{
fAnalysisManager->SetVerboseLevel(value);
}
}
@@ -125,6 +125,9 @@ class G4VScoringMesh
G4ThreeVector GetSize() const;
// set starting and span angles (used only for tube segment)
void SetAngles(G4double, G4double);
// get angles (used only for tube segment)
inline G4double GetStartAngle() const { return fAngle[0]; }
inline G4double GetAngleSpan() const { return fAngle[1]; }
// set position of center of this mesh
void SetCenterPosition(G4double centerPosition[3]);
// get position of center of this mesh
@@ -313,8 +313,7 @@ void G4ScoreQuantityMessenger::SetNewValue(G4UIcommand* command,
{
G4PSCellFluxForCylinder3D* pps =
new G4PSCellFluxForCylinder3D(token[0]);
G4ThreeVector msize = mesh->GetSize(); // gevin in R Z N/A
pps->SetCylinderSize(msize[0], msize[1]); // given in dr dz
pps->SetCylinderSize(mesh->GetSize(),mesh->GetStartAngle(),mesh->GetAngleSpan());
G4int nSeg[3];
mesh->GetNumberOfSegments(nSeg);
pps->SetNumberOfSegments(nSeg);
@@ -348,8 +347,7 @@ void G4ScoreQuantityMessenger::SetNewValue(G4UIcommand* command,
{
G4PSPassageCellFluxForCylinder3D* pps =
new G4PSPassageCellFluxForCylinder3D(token[0]);
G4ThreeVector msize = mesh->GetSize(); // gevin in R Z N/A
pps->SetCylinderSize(msize[0], msize[1]); // given in dr dz
pps->SetCylinderSize(mesh->GetSize(),mesh->GetStartAngle(),mesh->GetAngleSpan());
G4int nSeg[3];
mesh->GetNumberOfSegments(nSeg);
pps->SetNumberOfSegments(nSeg);
@@ -401,8 +399,7 @@ void G4ScoreQuantityMessenger::SetNewValue(G4UIcommand* command,
G4PSDoseDepositForCylinder3D* pps =
new G4PSDoseDepositForCylinder3D(token[0]);
pps->SetUnit(token[1]);
G4ThreeVector msize = mesh->GetSize(); // gevin in R Z N/A
pps->SetCylinderSize(msize[0], msize[1]); // given in dr dz
pps->SetCylinderSize(mesh->GetSize(),mesh->GetStartAngle(),mesh->GetAngleSpan());
G4int nSeg[3];
mesh->GetNumberOfSegments(nSeg);
pps->SetNumberOfSegments(nSeg);
@@ -820,7 +817,7 @@ void G4ScoreQuantityMessenger::FillTokenVec(G4String newValues,
{
G4Tokenizer next(newValues);
G4String val;
while(!(val = next()).isNull())
while(!(val = next()).empty())
{ // Loop checking 12.18.2015 M.Asai
token.push_back(val);
}
@@ -79,7 +79,10 @@ void G4ScoringCylinder::SetupGeometry(G4VPhysicalVolume* fWorldPhys)
G4String tubsName = fWorldName + "_mesh";
if(verboseLevel > 9)
G4cout << "R max., Dz =: " << fSize[0] << ", " << fSize[1] << G4endl;
{
G4cout << "R min, R max., Dz =: " << fSize[0] << ", " << fSize[1]
<< ", " << fSize[2] << G4endl;
}
G4VSolid* tubsSolid = new G4Tubs(tubsName + "0", // name
fSize[0], // R min
fSize[1], // R max
@@ -987,7 +987,7 @@ void G4ScoringMessenger::FillTokenVec(G4String newValues, G4TokenVec& token)
{
G4Tokenizer next(newValues);
G4String val;
while(!(val = next()).isNull())
while(!(val = next()).empty())
{ // Loop checking 12.18.2015 M.Asai
token.push_back(val);
}
+11 -3
View File
@@ -89,10 +89,17 @@ void G4VScoringMesh::SetSize(G4double size[3])
if(!sizeIsSet)
{
sizeIsSet = true;
for(int i = 0; i < 3; i++)
{
fSize[i] = size[i];
}
}
for(int i = 0; i < 3; i++)
else
{
fSize[i] = size[i];
G4String message = " Mesh size has already been set and it cannot be changed.\n";
message += " This method is ignored.";
G4Exception("G4VScoringMesh::SetSize()",
"DigiHitsUtilsScoreVScoringMesh000", JustWarning, message);
}
}
G4ThreeVector G4VScoringMesh::GetSize() const
@@ -124,7 +131,8 @@ void G4VScoringMesh::SetNumberOfSegments(G4int nSegment[3])
}
else
{
G4String message = " The size of scoring segments can not be changed.";
G4String message = " Number of bins has already been set and it cannot be changed.\n";
message += " This method is ignored.";
G4Exception("G4VScoringMesh::SetNumberOfSegments()",
"DigiHitsUtilsScoreVScoringMesh000", JustWarning, message);
}