Import Geant4 9.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 16:25:56 +02:00
parent 74cad5e589
commit 89a9605df1
4440 changed files with 379508 additions and 189225 deletions
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VGraphicsSystem.hh,v 1.11 2006/06/29 21:28:04 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4VGraphicsSystem.hh,v 1.12 2010/05/20 07:55:47 allison Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
//
//
// John Allison 27th March 1996
@@ -79,11 +79,15 @@ public: // With description
const G4String& GetNickname () const;
const G4String& GetDescription () const;
Functionality GetFunctionality () const;
void SetName (const G4String&);
void SetNickName (const G4String&);
void SetDescription (const G4String&);
void SetFunctionality (Functionality);
protected:
const G4String fName;
const G4String fNickname;
const G4String fDescription;
G4String fName;
G4String fNickname;
G4String fDescription;
Functionality fFunctionality;
};
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VGraphicsSystem.icc,v 1.7 2006/06/29 21:28:06 gunter Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4VGraphicsSystem.icc,v 1.8 2010/05/20 07:55:47 allison Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
//
//
// John Allison 27th March 1996
@@ -47,3 +47,19 @@ inline G4VGraphicsSystem::Functionality
G4VGraphicsSystem::GetFunctionality () const {
return fFunctionality;
}
inline void G4VGraphicsSystem::SetName (const G4String& name) {
fName = name;
}
inline void G4VGraphicsSystem::SetNickName (const G4String& nickname) {
fNickname = nickname;
}
inline void G4VGraphicsSystem::SetDescription (const G4String& description) {
fDescription = description;
}
inline void G4VGraphicsSystem::SetFunctionality (Functionality f) {
fFunctionality = f;
}
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VSceneHandler.hh,v 1.42 2009/11/04 12:55:33 allison Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4VSceneHandler.hh,v 1.44 2010/05/30 11:30:49 allison Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
//
//
// John Allison 19th July 1996.
@@ -128,6 +128,7 @@ public: // With description
virtual void AddCompound (const G4VTrajectory&);
virtual void AddCompound (const G4VHit&);
virtual void AddCompound (const G4VDigi&);
virtual void AddCompound (const G4THitsMap<G4double>&);
//////////////////////////////////////////////////////////////
@@ -308,19 +309,20 @@ protected:
//////////////////////////////////////////////////////////////
// Other internal routines...
virtual const G4Polyhedron* CreateSectionPolyhedron ();
virtual const G4Polyhedron* CreateCutawayPolyhedron ();
virtual G4VSolid* CreateSectionSolid ();
virtual G4VSolid* CreateCutawaySolid ();
// Generic clipping using the BooleanProcessor in graphics_reps is
// implemented in this class. Subclasses that implement their own
// clipping should provide an override that returns zero.
void LoadAtts(const G4Visible&, G4AttHolder*);
// Load G4AttValues and G4AttDefs associated with the G4Visible
// object onto the G4AttHolder object. It checks fpModel, and also
// loads the G4AttValues and G4AttDefs from G4PhysicalVolumeModel,
// G4VTrajectory, G4VTrajectoryPoint, or G4VHits, as appropriate.
// The G4AttHolder object is an object of a class that publicly
// inherits G4AttHolder - see, e.g., SoG4Polyhedron in the Open
// Inventor driver. G4AttHolder deletes G4AttValues in its
// G4VTrajectory, G4VTrajectoryPoint, G4VHit or G4VDigi, as
// appropriate. The G4AttHolder object is an object of a class that
// publicly inherits G4AttHolder - see, e.g., SoG4Polyhedron in the
// Open Inventor driver. G4AttHolder deletes G4AttValues in its
// destructor to ensure proper clean-up of G4AttValues.
//////////////////////////////////////////////////////////////
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VisCommandsGeometrySet.hh,v 1.3 2007/01/05 16:24:19 allison Exp $
// GEANT4 tag $Name: geant4-09-02 $
// $Id: G4VisCommandsGeometrySet.hh,v 1.4 2010/06/15 16:33:55 allison Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
// /vis/geometry commands - John Allison 31st January 2006
@@ -39,12 +39,14 @@ class G4VisAttributes;
class G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VVisCommandGeometrySetFunction() {}
virtual void operator()(G4VisAttributes*) const = 0;
};
class G4VisCommandGeometrySetColourFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetColourFunction() {}
G4VisCommandGeometrySetColourFunction
(const G4Colour& colour):
fColour(colour) {}
@@ -58,6 +60,7 @@ private:
class G4VisCommandGeometrySetDaughtersInvisibleFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetDaughtersInvisibleFunction() {}
G4VisCommandGeometrySetDaughtersInvisibleFunction
(G4bool daughtersInvisible):
fDaughtersInvisible(daughtersInvisible) {}
@@ -71,6 +74,7 @@ private:
class G4VisCommandGeometrySetForceAuxEdgeVisibleFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetForceAuxEdgeVisibleFunction() {}
G4VisCommandGeometrySetForceAuxEdgeVisibleFunction
(G4bool forceAuxEdgeVisible):
fForceAuxEdgeVisible(forceAuxEdgeVisible) {}
@@ -84,6 +88,7 @@ private:
class G4VisCommandGeometrySetForceLineSegmentsPerCircleFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetForceLineSegmentsPerCircleFunction() {}
G4VisCommandGeometrySetForceLineSegmentsPerCircleFunction
(G4int lineSegmentsPerCircle):
fLineSegmentsPerCircle(lineSegmentsPerCircle) {}
@@ -97,6 +102,7 @@ private:
class G4VisCommandGeometrySetForceSolidFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetForceSolidFunction() {}
G4VisCommandGeometrySetForceSolidFunction
(G4bool forceSolid):
fForceSolid(forceSolid) {}
@@ -110,6 +116,7 @@ private:
class G4VisCommandGeometrySetForceWireframeFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetForceWireframeFunction() {}
G4VisCommandGeometrySetForceWireframeFunction
(G4bool forceWireframe):
fForceWireframe(forceWireframe) {}
@@ -123,6 +130,7 @@ private:
class G4VisCommandGeometrySetLineStyleFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetLineStyleFunction() {}
G4VisCommandGeometrySetLineStyleFunction
(G4VisAttributes::LineStyle lineStyle):
fLineStyle(lineStyle) {}
@@ -136,6 +144,7 @@ private:
class G4VisCommandGeometrySetLineWidthFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetLineWidthFunction() {}
G4VisCommandGeometrySetLineWidthFunction
(G4double lineWidth):
fLineWidth(lineWidth) {}
@@ -149,6 +158,7 @@ private:
class G4VisCommandGeometrySetVisibilityFunction:
public G4VVisCommandGeometrySetFunction {
public:
virtual ~G4VisCommandGeometrySetVisibilityFunction() {}
G4VisCommandGeometrySetVisibilityFunction
(G4bool visibility):
fVisibility(visibility) {}
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VisCommandsSceneAdd.hh,v 1.19 2009/11/04 13:15:02 allison Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4VisCommandsSceneAdd.hh,v 1.21 2010/06/03 10:17:44 allison Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
// /vis/scene commands - John Allison 9th August 1998
@@ -52,6 +52,18 @@ private:
G4UIcommand* fpCommand;
};
class G4VisCommandSceneAddDigis: public G4VVisCommandScene {
public:
G4VisCommandSceneAddDigis ();
virtual ~G4VisCommandSceneAddDigis ();
G4String GetCurrentValue (G4UIcommand* command);
void SetNewValue (G4UIcommand* command, G4String newValue);
private:
G4VisCommandSceneAddDigis (const G4VisCommandSceneAddDigis&);
G4VisCommandSceneAddDigis& operator = (const G4VisCommandSceneAddDigis&);
G4UIcmdWithoutParameter* fpCommand;
};
class G4VisCommandSceneAddEventID: public G4VVisCommandScene {
public:
G4VisCommandSceneAddEventID ();
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VisCommandsViewerSet.hh,v 1.23 2009/05/13 18:17:25 allison Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4VisCommandsViewerSet.hh,v 1.24 2010/10/06 10:15:38 allison Exp $
// GEANT4 tag $Name: geant4-09-04 $
// /vis/viewer/set commands - John Allison 16th May 2000
@@ -58,6 +58,8 @@ private:
G4UIcommand* fpCommandBackground;
G4UIcommand* fpCommandCulling;
G4UIcmdWithAString* fpCommandCutawayMode;
G4UIcommand* fpCommandDefaultColour;
G4UIcommand* fpCommandDefaultTextColour;
G4UIcmdWithABool* fpCommandEdge;
G4UIcommand* fpCommandExplodeFactor;
G4UIcmdWithADouble* fpCommandGlobalMarkerScale;
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VisExecutive.hh,v 1.9 2009/11/17 15:34:06 allison Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4VisExecutive.hh,v 1.10 2010/05/28 16:48:03 allison Exp $
// GEANT4 tag $Name: geant4-09-04-beta-01 $
//
//
// John Allison 2nd February 2005 (based on MyVisManager, 24th January 1998).
@@ -55,7 +55,7 @@
// ...
// #ifdef G4VIS_USE
// // Instantiate and initialise Visualization Manager.
// G4VisManager* visManager = new G4VisExecutive; // See Nore (a).
// G4VisManager* visManager = new G4VisExecutive; // See Note (a).
// visManager -> SetVerboseLevel (verbosityString); // See Note (b).
// visManager -> RegisterGraphicsSystem (new myGS); // See Note (c).
// visManager -> Initialize (); // See Note (d).
@@ -76,7 +76,9 @@
// separate file, see advice below.
// (b) The verbosityString ("quiet", "errors", "warnings",
// "confirmations", etc. - "help /vis/verbose" to see options) can be
// set here or with /vis/verbose.
// set here or with /vis/verbose. Alternatively, you can instantiate
// with a verbosity string. e.g:
// G4VisManager* visManager = new G4VisExecutive("quiet");
// (c) You can register your own graphics system like this.
// (d) Your can intialise like this with C++ code or use /vis/initialize.
//
@@ -120,7 +122,7 @@ class G4VisExecutive: public G4VisManager {
public: // With description
G4VisExecutive () {}
G4VisExecutive (const G4String& verbosityString = "warnings");
private:
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VisExecutive.icc,v 1.22 2009/10/12 11:54:50 akimura Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4VisExecutive.icc,v 1.27 2010/11/07 11:14:33 allison Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//
// John Allison 24th January 1998.
@@ -42,6 +42,7 @@
#include "G4HepRepFile.hh"
#include "G4RayTracer.hh"
#include "G4HitFilterFactories.hh"
#include "G4DigiFilterFactories.hh"
#include "G4TrajectoryFilterFactories.hh"
#include "G4TrajectoryModelFactories.hh"
#include "G4VRML1File.hh"
@@ -91,6 +92,11 @@
#include "G4VRML2.hh"
#endif
inline
G4VisExecutive::G4VisExecutive (const G4String& verbosityString):
G4VisManager(verbosityString)
{}
// The inline keyword prevents the compiler making an external
// reference even though they cannot actually be inlined since they
// are virtual functions. This prevents a "multiple definition" error
@@ -117,6 +123,65 @@ G4VisExecutive::RegisterGraphicsSystems () {
RegisterGraphicsSystem (new G4FukuiRenderer);
#endif
// Register OGL graphics system with generic nicknames
#ifdef G4VIS_USE_OPENGL
G4VGraphicsSystem* ogl = 0;
G4VGraphicsSystem* ogli = 0;
G4VGraphicsSystem* ogls = 0;
// Follow G4UIExecutive
#if defined(G4UI_USE_QT)
#ifdef G4VIS_USE_OPENGLQT
ogl = new G4OpenGLStoredQt;
ogli = new G4OpenGLImmediateQt;
ogls = new G4OpenGLStoredQt;
#endif
#elif defined(G4UI_USE_XM)
#ifdef G4VIS_USE_OPENGLXM
ogl = new G4OpenGLStoredXm;
ogli = new G4OpenGLImmediateXm;
ogls = new G4OpenGLStoredXm;
#endif
#elif defined(G4UI_USE_WIN32)
#ifdef G4VIS_USE_OPENGLWIN32
ogl = new G4OpenGLStoredWin32;
ogli = new G4OpenGLImmediateWin32;
ogls = new G4OpenGLStoredWin32;
#endif
#elif defined(G4UI_USE_TCSH)
#if defined (G4VIS_USE_OPENGLX)
ogl = new G4OpenGLStoredX;
ogli = new G4OpenGLImmediateX;
ogls = new G4OpenGLStoredX;
#elif defined (G4VIS_USE_OPENGLWIN32)
ogl = new G4OpenGLStoredWin32;
ogli = new G4OpenGLImmediateWin32;
ogls = new G4OpenGLStoredWin32;
#endif
#else
#if defined (G4VIS_USE_OPENGLX)
ogl = new G4OpenGLStoredX;
ogli = new G4OpenGLImmediateX;
ogls = new G4OpenGLStoredX;
#elif defined (G4VIS_USE_OPENGLWIN32)
ogl = new G4OpenGLStoredWin32;
ogli = new G4OpenGLImmediateWin32;
ogls = new G4OpenGLStoredWin32;
#endif
#endif
if (ogl) {
ogl->SetNickName("OGL");
RegisterGraphicsSystem (ogl);
}
if (ogli) {
ogli->SetNickName("OGLI");
RegisterGraphicsSystem (ogli);
}
if (ogls) {
ogls->SetNickName("OGLS");
RegisterGraphicsSystem (ogls);
}
#endif
#ifdef G4VIS_USE_OPENGLX
RegisterGraphicsSystem (new G4OpenGLImmediateX);
RegisterGraphicsSystem (new G4OpenGLStoredX);
@@ -137,6 +202,21 @@ G4VisExecutive::RegisterGraphicsSystems () {
RegisterGraphicsSystem (new G4OpenGLStoredQt);
#endif
// Register OI graphics system with generic nickname
#ifdef G4VIS_USE_OI
G4VGraphicsSystem* oi = 0;
#ifdef G4VIS_USE_OIX
oi = new G4OpenInventorX;
#endif
#ifdef G4VIS_USE_OIWIN32
oi = new G4OpenInventorWin32;
#endif
if (oi) {
oi->SetNickName("OI");
RegisterGraphicsSystem (oi);
}
#endif
#ifdef G4VIS_USE_OIX
RegisterGraphicsSystem (new G4OpenInventorX);
#endif
@@ -175,6 +255,9 @@ G4VisExecutive::RegisterModelFactories()
// Hit filter models
RegisterModelFactory(new G4HitAttributeFilterFactory());
// Digi filter models
RegisterModelFactory(new G4DigiAttributeFilterFactory());
}
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VisManager.hh,v 1.70 2009/02/25 18:28:00 lgarnier Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4VisManager.hh,v 1.76 2010/11/13 10:54:55 allison Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//
@@ -65,17 +65,18 @@
// with the current viewer, in particular, the Draw operations.
//
// Each scene comprises drawable objects such as detector components
// and hits when appropriate. A scene handler translates a scene into
// graphics-system-specific function calls and, possibly, a
// graphics-system-dependent database - display lists, scene graphs,
// etc. Each viewer has its "view parameters" (see class description
// of G4ViewParameters for available parameters and also for a
// description of the concept of a "standard view" and all that).
// and trajectories, hits and digis when appropriate. A scene handler
// translates a scene into graphics-system-specific function calls
// and, possibly, a graphics-system-dependent database - display
// lists, scene graphs, etc. Each viewer has its "view parameters"
// (see class description of G4ViewParameters for available parameters
// and also for a description of the concept of a "standard view" and
// all that).
//
// A friend class G4VisStateDependent is "state dependent", i.e., it
// is notified on change of state (G4ApplicationState). This is used
// to message the G4VisManager to draw hits and trajectories in the
// current scene at the end of event, as required.
// to message the G4VisManager to draw hits, digis and trajectories in
// the current scene at the end of event, as required.
#ifndef G4VISMANAGER_HH
#define G4VISMANAGER_HH
@@ -112,6 +113,7 @@ namespace {
typedef G4VModelFactory<G4VTrajectoryModel> G4TrajDrawModelFactory;
typedef G4VModelFactory< G4VFilter<G4VTrajectory> > G4TrajFilterFactory;
typedef G4VModelFactory< G4VFilter<G4VHit> > G4HitFilterFactory;
typedef G4VModelFactory< G4VFilter<G4VDigi> > G4DigiFilterFactory;
}
class G4VisManager: public G4VVisManager {
@@ -128,27 +130,20 @@ class G4VisManager: public G4VVisManager {
friend class G4RayTrajectory;
friend class G4RayTracerSceneHandler;
friend class G4RTMessenger;
friend class G4OpenGLStoredSceneHandler;
friend class G4OpenGLViewerMessenger;
friend class G4OpenGLXViewerMessenger;
friend class G4OpenGLXmViewerMessenger;
friend class G4XXXSceneHandler;
friend class G4HepRepFileSceneHandler;
// Management friends...
friend class G4VSceneHandler;
friend class G4VViewer;
friend std::ostream & operator <<
(std::ostream &, const G4VGraphicsSystem &);
friend std::ostream & operator <<
(std::ostream &, const G4VSceneHandler &);
friend class G4VisStateDependent;
friend class G4VisCommandList;
// operator << friends...
friend std::ostream& operator << (std::ostream&, const G4VGraphicsSystem&);
friend std::ostream& operator << (std::ostream&, const G4VSceneHandler&);
public: // With description
enum Verbosity {
@@ -164,7 +159,7 @@ public: // With description
protected: // With description
G4VisManager ();
G4VisManager (const G4String& verbosityString = "warnings");
// The constructor is protected so that an object of the derived
// class may be constructed.
@@ -214,6 +209,12 @@ public: // With description
void RegisterModel(G4VFilter<G4VHit>* filter);
// Register trajectory hit model. Assumes ownership of model.
void RegisterModelFactory(G4DigiFilterFactory* factory);
// Register trajectory digi model factory. Assumes ownership of factory.
void RegisterModel(G4VFilter<G4VDigi>* filter);
// Register trajectory digi model. Assumes ownership of model.
void SelectTrajectoryModel(const G4String& model);
// Set default trajectory model. Useful for use in compiled code
@@ -280,6 +281,8 @@ public: // With description
void Draw (const G4VHit&);
void Draw (const G4VDigi&);
void Draw (const G4VTrajectory&, G4int i_mode);
// i_mode is a parameter that can be used to control the drawing of
// the trajectory. See, e.g., G4VTrajectory::DrawTrajectory.
@@ -305,11 +308,13 @@ public: // With description
// has changed so that they may rebuild their graphics database, if
// any, and redraw all views.
void DispatchToModel(const G4VTrajectory&);
void DispatchToModel(const G4VTrajectory&, G4int i_mode);
// Draw the trajectory.
G4bool FilterTrajectory(const G4VTrajectory&);
G4bool FilterHit(const G4VHit&);
G4bool FilterDigi(const G4VDigi&);
////////////////////////////////////////////////////////////////////////
// Administration routines.
@@ -328,8 +333,8 @@ private:
void EndOfEvent ();
// This is called on change of state (G4ApplicationState). It is
// used to draw hits and trajectories if included in the current
// scene at the end of event, as required.
// used to draw hits, digis and trajectories if included in the
// current scene at the end of event, as required.
void EndOfRun ();
@@ -356,7 +361,7 @@ public: // With description
// already registered.
const G4SceneHandlerList& GetAvailableSceneHandlers () const;
const G4SceneList& GetSceneList () const;
Verbosity GetVerbosity () const;
static Verbosity GetVerbosity ();
G4bool GetTransientsDrawnThisRun () const;
G4bool GetTransientsDrawnThisEvent () const;
const G4Event* GetRequestedEvent () const;
@@ -365,10 +370,10 @@ public: // With description
void SetUserAction (G4VUserVisAction* pVisAction,
const G4VisExtent& = G4VisExtent::NullExtent);
void SetUserActionExtent (const G4VisExtent&);
void SetCurrentGraphicsSystem (G4VGraphicsSystem* pSystem);
void SetCurrentGraphicsSystem (G4VGraphicsSystem*);
void SetCurrentScene (G4Scene*);
void SetCurrentSceneHandler (G4VSceneHandler* pScene);
void SetCurrentViewer (G4VViewer* pView);
void SetCurrentSceneHandler (G4VSceneHandler*);
void SetCurrentViewer (G4VViewer*);
G4SceneHandlerList& SetAvailableSceneHandlers (); // Returns lvalue.
G4SceneList& SetSceneList (); // Returns lvalue.
void SetVerboseLevel (G4int);
@@ -444,7 +449,7 @@ private:
G4GraphicsSystemList fAvailableGraphicsSystems;
G4SceneList fSceneList;
G4SceneHandlerList fAvailableSceneHandlers;
Verbosity fVerbosity;
static Verbosity fVerbosity;
std::vector<G4UImessenger*> fMessengerList;
std::vector<G4UIcommand*> fDirectoryList;
G4VisStateDependent* fpStateDependent; // Friend state dependent class.
@@ -466,6 +471,9 @@ private:
// Hit filter model manager
G4VisFilterManager<G4VHit>* fpHitFilterMgr;
// Digi filter model manager
G4VisFilterManager<G4VDigi>* fpDigiFilterMgr;
};
#include "G4VisManager.icc"
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
// $Id: G4VisManager.icc,v 1.21 2009/01/13 09:55:15 lgarnier Exp $
// GEANT4 tag $Name: geant4-09-03 $
// $Id: G4VisManager.icc,v 1.23 2010/12/14 15:53:28 gcosmo Exp $
// GEANT4 tag $Name: geant4-09-04 $
//
//
// GEANT4 Visualization Manager - John Allison 02/Jan/1996.
@@ -68,11 +68,6 @@ G4VisManager::GetCurrentGraphicsSystem () const {
return fpGraphicsSystem;
}
inline G4VisManager::Verbosity G4VisManager::GetVerbosity () const {
return fVerbosity;
}
inline G4bool G4VisManager::GetTransientsDrawnThisEvent() const {
return fTransientsDrawnThisEvent;
}