BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
BDSOutputFactory.cc
1/*
2Beam Delivery Simulation (BDSIM) Copyright (C) Royal Holloway,
3University of London 2001 - 2022.
4
5This file is part of BDSIM.
6
7BDSIM is free software: you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published
9by the Free Software Foundation version 3 of the License.
10
11BDSIM is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with BDSIM. If not, see <http://www.gnu.org/licenses/>.
18*/
19#include "BDSOutputFactory.hh"
20#include "BDSOutputType.hh"
21#include "BDSOutput.hh"
22#include "BDSOutputNone.hh"
23#include "BDSOutputROOT.hh"
24
26 const G4String& fileName,
27 G4int fileNumberOffset,
28 G4int compressionLevel)
29{
30 BDSOutput* result = nullptr;
31 switch (format.underlying())
32 {
33 case BDSOutputType::none:
34 {result = new BDSOutputNone(); break;}
35 case BDSOutputType::rootevent:
36 {result = new BDSOutputROOT(fileName, fileNumberOffset, compressionLevel); break;}
37 default:
38 {result = new BDSOutputNone(); break;}
39 }
40 return result;
41}
static BDSOutput * CreateOutput(BDSOutputType format, const G4String &fileName, G4int fileNumberOffset=-1, G4int compressionLevel=-1)
factory method
No output class.
ROOT Event output class.
Output base class that defines interface for all output types.
Definition: BDSOutput.hh:73
type underlying() const
return underlying value (can be used in switch statement)