Import Geant4 11.0.0 source tree
This commit is contained in:
committed by
Ben Morgan
parent
6399a014b6
commit
80e2389dd8
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user