Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Typedefs | Functions | Variables
JDETECTOR Namespace Reference

Auxiliary classes and methods for detector calibration. More...

Classes

class  JAnchor
 Data structure for anchor position on sea bed. More...
 
struct  JBase
 Type definition of base module. More...
 
class  JCalibration
 Data structure for PMT calibration. More...
 
struct  JCalibrator
 Auxiliary class to apply (de-)calibration to template hit. More...
 
struct  JCalibrator< T, true >
 Template specialisation of JCalibrator for primitive data types. More...
 
struct  JCalibrator< JHit_t, false >
 Template specialisation of JCalibrator for non-primitive data types. More...
 
class  JTransferFunction1D
 Auxiliary class for a non-linear transfer function of TDC inside FPGA. More...
 
class  JCLBDefaultSimulator
 Default CLB simulation. More...
 
class  JCLBDefaultSimulatorInterface
 Default CLB simulation. More...
 
struct  JCLBInput
 Wrapper for CLB input. More...
 
class  JCLBSimulator
 Interface for CLB simulation. More...
 
class  JCompass
 Data structure for comapss in three dimensions. More...
 
class  JCompassMatrix
 Compass matrix. More...
 
class  JDAQHitRouter
 Simple wrapper around JModuleRouter class for direct addressing of PMT data in detector data structure for DAQ hits. More...
 
class  JDetector
 Detector data structure. More...
 
class  JDetectorAddressMap
 Lookup table for PMT addresses in detector. More...
 
struct  JPPM_DU_t
 Type definitions for different detectors.PPM_DU. More...
 
struct  JKM3NeT_t
 KM3NeT. More...
 
struct  JMonteCarlo_t
 Monte Carlo .detx file. More...
 
struct  JObsolete_t
 obsolete detector More...
 
class  JTemplateDetectorAddressMap
 Template lookup table for PMT addresses in detector. More...
 
class  JTemplateDetectorAddressMap< JObsolete_t >
 Template specialisation of JTemplateDetectorAddressMap for obsolete detector. More...
 
class  JTemplateDetectorAddressMap< JPPM_DU_t >
 Template specialisation of JTemplateDetectorAddressMap for PPM_DU detector. More...
 
class  JTemplateDetectorAddressMap< JKM3NeT_t >
 Template specialisation of JTemplateDetectorAddressMap for KM3NeT detector. More...
 
class  JTemplateDetectorAddressMap< JMonteCarlo_t >
 Template specialisation of JTemplateDetectorAddressMap for Monte Carlo detector. More...
 
struct  JDetectorAddressMap_t
 Auxiliary class to extract detector address map from detector identifier. More...
 
struct  JDetectorAddressMap_t< JTypeList< JHead_t, JTail_t > >
 
struct  JDetectorAddressMap_t< JTypeList< JHead_t, JNullType > >
 
struct  JPMTCalibration_t
 Auxiliary data structure for PMT time calibration. More...
 
struct  JHVCalibration_t
 Data structure for PMT high-voltage calibration. More...
 
struct  JModulePosition_t
 Auxiliary data structure for module position. More...
 
struct  JModuleRotation_t
 Auxiliary data structure for module rotation. More...
 
class  JDetectorHeader
 Data structure for detector header. More...
 
class  JDetectorParameters
 Data structure for parameters for detector geometry. More...
 
class  JDetectorParametersHelper
 Auxiliary class for I/O of JDetectorParameters data structure. More...
 
class  JDetectorSimulator
 Detector simulation. More...
 
class  JDetectorSubset_t
 Detector subset without binary search functionality. More...
 
class  JDetectorSubset
 Detector subset with binary search functionality. More...
 
struct  JRotation
 Auxiliary class to get rotation matrix between two optical modules. More...
 
struct  JDetectorVersion
 Detector version. More...
 
struct  JGetDetectorVersion
 Auxiliary class to map detector variant to detector version. More...
 
struct  JPutDetectorVersion
 Auxiliary class to map detector version to detector variant. More...
 
class  JK40DefaultSimulator
 Default implementation of the simulation of K40 background. More...
 
class  JK40DefaultSimulatorInterface
 Default K40 simulator interface. More...
 
struct  JK40Rates
 Auxiliary class for K40 rates. More...
 
class  JK40Simulator
 Interface for simulation of K40 background. More...
 
class  JLocation
 Logical location of module. More...
 
class  JModule
 Data structure for a composite optical module. More...
 
class  JModuleAddress
 Address of module in detector data structure. More...
 
struct  JPMTAddressTranslator
 Data structure to translate PMT physical to readout address. More...
 
class  JModuleAddressMap
 Lookup table for PMT addresses in optical module. More...
 
struct  JModuleComparator3Z_t
 Module comparator according its z-position. More...
 
struct  JModuleComparator3D_t
 Module comparator according its distance to origin. More...
 
class  JModuleGeometry
 Module geometry. More...
 
struct  JUTCDistance
 Auxiliary class for distance beteen UTC times. More...
 
struct  JModuleAttributes
 Data structure for module address and module attributes. More...
 
struct  JMaximalDistance
 Auxiliary class to match modules according maximal distance. More...
 
class  JModuleMapper
 Mapper for directly addressing of associated modules in the detector data structure. More...
 
class  JModuleRouter
 Router for direct addressing of module data in detector data structure. More...
 
class  JMonteCarloDetector
 Monte Carlo detector (i.e. so-called .det file). More...
 
class  JPMT
 Data structure for PMT geometry and calibration. More...
 
class  JPMTAddress
 Address of PMT in detector data structure. More...
 
struct  JPMTAnalogueSignalProcessor
 PMT analogue signal processor. More...
 
class  JPMTChannel
 Auxiliary class to uniquely identify PMT readout channel. More...
 
struct  JModuleSignalProcessor
 Auxiliary container for PMT signal processors in same optical module. More...
 
class  JPMTDefaultSimulator
 Default PMT simulation. More...
 
class  JPMTDefaultSimulatorInterface
 Default PMT simulation interface. More...
 
class  JPMTIdentifier
 PMT identifier. More...
 
class  JPMTParameters
 Data structure for PMT parameters. More...
 
class  JPMTParametersMap
 Auxiliary class for map of PMT parameters. More...
 
class  JPMTPhysicalAddress
 Data structure for PMT physical address. More...
 
struct  JPMTRateRange
 Data structure for range of PMT rates. More...
 
class  JPMTReadoutAddress
 Data structure for PMT readout address. More...
 
class  JPMTRouter
 Router for direct addressing of PMT data in detector data structure. More...
 
class  JPMTSignalProcessorInterface
 PMT signal processor interface. More...
 
struct  JPhotoElectron
 Data structure for single photo-electron. More...
 
struct  JPMTSignal
 Data structure for PMT analogue signal. More...
 
struct  JPMTPulse
 Data structure for PMT digital pulse. More...
 
class  JPMTData
 Template data structure for PMT I/O. More...
 
class  JModuleData
 Data structure for PMT data corresponding to a detector module. More...
 
class  JPMTSimulator
 Interface for PMT simulation. More...
 
class  JTransitionTimeGenerator
 Auxiliary class to generate PMT transition times based on measurements by Oleg Kalekin et al. More...
 
class  JTransitionTimeProbability
 Probability distibution of the PMT transition times based on measurements by Oleg Kalekin et al. More...
 
class  JTransitionTimeProbability2D
 Auxiliary class to generate twofold PMT transition times. More...
 
struct  JStatus
 Auxiliary class for controlling PMT status. More...
 
struct  JGetPMTStatusBit
 Auxiliary class to map key to PMT status bit. More...
 
struct  JPutPMTStatusBit
 Auxiliary class to map PMT status bit to key. More...
 
struct  JStringCounter
 Auxiliary class for counting unique strings. More...
 
class  JTripod
 Data structure for tripod. More...
 
struct  JVersion
 Auxiliary class for version identifier. More...
 

Typedefs

typedef JPMTData< JPMTPulseJPMTOutput
 Type definition of PMT base output. More...
 
typedef JTYPELIST< JPPM_DU_t,
JKM3NeT_t, JMonteCarlo_t >
::typelist 
JDetectorTypes_t
 Type list of detector types. More...
 
typedef std::vector
< JHVCalibration_t
JHVCalibration
 PMT high voltage calibration. More...
 
typedef std::vector
< JPMTCalibration_t
JPMTCalibration
 PMT time calibration. More...
 
typedef std::vector
< JModulePosition_t
JModulePosition
 Module position. More...
 
typedef std::vector
< JModuleRotation_t
JModuleRotation
 Module rotation. More...
 
typedef double JRateL0_t
 Type definition of singles rate [Hz]. More...
 
typedef std::vector< double > JRateL1_t
 Type definition of count rate as a function of multiplicty [Hz] The multiples rate start counting at two-fold coincidences. More...
 
typedef size_t multiplicity_type
 Type definition of multiplicity. More...
 
typedef JLANG::JComparator
< double(JVector3D::*)() const > 
JModuleComparator
 Type definition of a module comparator using 3D position information. More...
 
typedef JLANG::JObjectID JModuleIdentifier
 
typedef std::map
< JPMTIdentifier,
JPMTParameters
JPMTParametersMap_t
 Type definition of map PMT identifier to PMT parameters. More...
 

Functions

bool operator< (const JAnchor &first, const JAnchor &second)
 Sort anchors in ascending distance from (0,0). More...
 
template<class T >
double getTime (const T &t1, const JCalibration &cal)
 Get calibrated time. More...
 
template<class T >
double putTime (const T &t1, const JCalibration &cal)
 Get de-calibrated time. More...
 
template<class T >
double getToT (const T &tot, const JCalibration &cal)
 Get calibrated time-over-threshold of hit. More...
 
template<class T >
double putToT (const T &tot, const JCalibration &cal)
 Get de-calibrated time-over-threshold of hit. More...
 
bool hasDetector (JType< JPPM_DU_t > type, const int id)
 Check validity of detector identifier. More...
 
bool hasDetector (JType< JKM3NeT_t > type, const int id)
 
bool hasDetector (JType< JMonteCarlo_t > type, const int id)
 
template<class JDetector_t >
JDetectorAddressMapgetDetectorAddressMap ()
 Get detector address map. More...
 
template<class JDetector_t >
JModuleAddressMapgetModuleAddressMap (int id)
 Get module address map. More...
 
template<class JDetector_t >
const JPMTAddressTranslatorgetPMTAddressTranslator (int id, int tdc)
 Get PMT address translator for given module identifier and TDC channel. More...
 
template<class JDetector_t >
int getPMTLogicalIndex (int id, int tdc)
 Get PMT logical index for given module identifier and TDC channel. More...
 
JDetectorAddressMapgetDetectorAddressMap (const int id)
 Get detector address map. More...
 
bool hasDetectorAddressMap (const int id)
 Check if detector address map is available. More...
 
bool is_valid (const json &js)
 Check validity of JSon data. More...
 
std::string get_date_string (const std::time_t &time)
 Create ISO 8601 date string for output file header. More...
 
template<class T >
std::vector< std::string > get_string_array (T value)
 Cast single value to array of strings, conform the DB-format. More...
 
double retrieve_value (std::vector< std::string > string_value_array)
 Retrieve value from json array of strings. More...
 
void to_json (json &js, const JPMTCalibration_t &object)
 Convert PMT time calibration to JSon. More...
 
void from_json (const json &js, JPMTCalibration_t &object)
 Convert JSon to PMT time calibration. More...
 
void to_json (json &js, const JHVCalibration_t &object)
 Convert PMT high-voltage calibration to JSon. More...
 
void from_json (const json &js, JHVCalibration_t &object)
 Convert JSon to PMT high-voltage calibration. More...
 
void to_json (json &js, const JModulePosition_t &object)
 Convert module position to JSon. More...
 
void from_json (const json &js, JModulePosition_t &object)
 Convert JSon to module position. More...
 
void to_json (json &js, const JModuleRotation_t &object)
 Convert module rotation to JSon. More...
 
void from_json (const json &js, JModuleRotation_t &object)
 Convert JSon to module rotation. More...
 
JDetectorHeader getARCADetectorHeader ()
 Get detector header for ARCA. More...
 
JDetectorHeader getORCADetectorHeader ()
 Get detector header for ORCA. More...
 
double getMaximalDistance (const JDetector &detector)
 Get maximal distance between modules in detector. More...
 
double GetXrotationG4 (const JVersor3D dir)
 Get rotation over X axis in Geant4 coordinate system. More...
 
double GetYrotationG4 (const JVersor3D dir)
 Get rotation over Y axis in Geant4 coordinate system. More...
 
void read_gdml (std::istream &, const JDetector &)
 
void write_gdml (std::ostream &out, const JDetector &detector)
 Writes KM3Sim GDML input file from detector. More...
 
double getMaximalTime (const JDetector &detector)
 Get maximal time between modules in detector following causality. More...
 
double getMaximalTime (const JDetector &detector, const double roadWidth_m)
 Get maximal time between modules in detector following causality. More...
 
JTimeRange getTimeRange (const JTimeRange &timeRange, const JModule &module)
 Get de-calibrated time range. More...
 
int getNumberOfPMTs (const JModule &module)
 Get number of PMTs. More...
 
int getNumberOfPMTs (const JDetector &detector)
 Get number of PMTs. More...
 
std::set< int > getStringIDs (const JDetector &detector)
 Get list of strings IDs. More...
 
int getNumberOfFloors (const JDetector &detector)
 Get number of floors. More...
 
int getNumberOfModules (const JDetector &detector)
 Get number of modules. More...
 
void load (const JString &file_name, JDetector &detector)
 Load detector from input file. More...
 
void store (const JString &file_name, const JDetector &detector)
 Store detector to output file. More...
 
const JModulegetModule (const JModuleAddressMap &memo, const int id, const JLocation &location=JLocation())
 Get module according module address map. More...
 
const JModulegetModule (const int id, const JLocation &location=JLocation())
 Get module corresponding to Antares storey. More...
 
JPosition3D getPosition (const JModule &first, const JModule &second)
 Get position to go from first to second module. More...
 
JCalibration getCalibration (const JCalibration &first, const JCalibration &second)
 Get calibration to go from first to second calibration. More...
 
std::vector< std::string > getDetectorVersions (const JType< std::string > &type)
 Get detector versions. More...
 
std::vector
< JDetectorVersion::JVersion_t
getDetectorVersions (const JType< JDetectorVersion::JVersion_t > &type)
 Get detector versions. More...
 
template<class T >
std::vector< TgetDetectorVersions ()
 Get detector versions. More...
 
std::string getLabel (const JLocation &location)
 Get module label for monitoring and other applications. More...
 
template<class JAttributes_t >
void setAttributes (const JModule &first, const JModule &second, JAttributes_t &attributes)
 Template method to set module attributes. More...
 
template<>
void setAttributes< JNullType > (const JModule &first, const JModule &second, JNullType &attributes)
 Template specialisation to set no attributes for the default empty object. More...
 
bool operator< (const JPMTIdentifier &first, const JPMTIdentifier &second)
 Less than operator for PMT identifiers. More...
 
bool operator== (const JPMTIdentifier &first, const JPMTIdentifier &second)
 Equal operator for PMT identifiers. More...
 
std::string getLabel (const JPMTIdentifier &id)
 Get PMT label for monitoring and other applications. More...
 
double getSurvivalProbability (const JPMTParameters &parameters)
 Get model dependent probability that a one photo-electron hit survives the simulation of the PMT assuming QE = 1. More...
 
double getHitProbability (const double QE, const double mu)
 Get ratio of hit probabilities for given QE and expectation value of the number of photo-electrons. More...
 
double getMaximalHitProbability (const double mu)
 Get maximal ratio of hit probabilities for given QE and expectation value of the number of photo-electrons. More...
 
double getQE (const double R, const double mu)
 Get QE for given ratio of hit probabilities and expectation value of the number of photo-electrons. More...
 
bool operator< (const JPhotoElectron &first, const JPhotoElectron &second)
 Less than operator for photo-elecrons. More...
 
bool operator< (const JPMTSignal &first, const JPMTSignal &second)
 Less than operator for PMT signals. More...
 
bool operator< (const JPMTPulse &first, const JPMTPulse &second)
 Less than operator for PMT pulses. More...
 
JTimeRange getTimeRange (const JPMTData< JPMTSignal > &input)
 Get time range (i.e. earlist and latest hit time) of PMT data. More...
 
JTimeRange getTimeRange (const JModuleData &input)
 Get time range (i.e. earlist and latest hit time) of module data. More...
 
std::vector< std::string > getPMTStatusBits (const JType< std::string > &type)
 Get PMT status bits. More...
 
std::vector
< JStatus::JPMTStatusBits_t
getPMTStatusBits (const JType< JStatus::JPMTStatusBits_t > &type)
 Get PMT status bits. More...
 
template<class T >
std::vector< TgetPMTStatusBits ()
 Get PMT status bits. More...
 
bool operator< (const JVersion &first, const JVersion &second)
 Less-than operator for versions. More...
 

Variables

const double TIME_OVER_THRESHOLD_NS = 25.62
 Specification for time-over-threshold corresponding to a one photo-electron pulse. More...
 
const double NOMINAL_GAIN = 1.0
 Specification for normalized gain corresponding to a one photo-electron pulse. More...
 
static const std::string User_t = "User"
 Detector calibration key words for JSON I/O. More...
 
static const std::string Location_t = "Location"
 
static const std::string StartTime_t = "StartTime"
 
static const std::string EndTime_t = "EndTime"
 
static const std::string Comment_t = "Comment"
 
static const std::string Type_t = "Type"
 
static const std::string Parameters_t = "Parameters"
 
static const std::string Tests_t = "Tests"
 
static const std::string Data_t = "Data"
 
static const std::string RunNumber_t = "RUN_NUMBER"
 
static const std::string Name_t = "Name"
 
static const std::string Unit_t = "Unit"
 
static const std::string Values_t = "Values"
 
static const std::string PMTT0s_t = "PMTT0s"
 
static const std::string PMTSupplyVoltage_t = "PMT_Supply_Voltage"
 
static const std::string PMTGain_t = "PMT_Gain"
 
static const std::string DOMPositions_t = "DOMPositions"
 
static const std::string DOMRotations_t = "DOMRotations"
 
static const std::string Test_t = "Test"
 
static const std::string Target_t = "Target"
 
static const std::string Outcome_t = "Outcome"
 
static const std::string UPI_t = "UPI"
 
static const std::string PBS_t = "PBS"
 
static const std::string Variant_t = "Variant"
 
static const std::string PMTSerial_t = "PMTSerial"
 
static const std::string DOMSerial_t = "DOMSerial"
 
static const std::string DOMId_t = "DOMId"
 
static const std::string T0_t = "T0"
 
static const std::string PX_t = "PX"
 
static const std::string PY_t = "PY"
 
static const std::string PZ_t = "PZ"
 
static const std::string Q0_t = "Q0"
 
static const std::string QX_t = "QX"
 
static const std::string QY_t = "QY"
 
static const std::string QZ_t = "QZ"
 
static const std::string Unitless_t = "-"
 
static const std::string Volt_t = "V"
 
static const std::string Result_t = "Result"
 
static const std::string OK_t = "OK"
 
static const std::string Failed_t = "FAILED"
 
static const char *const GENDET_DETECTOR_FILE_FORMAT = ".det"
 File name extensions. More...
 
static const char *const BINARY_DETECTOR_FILE_FORMAT = ".dat"
 JIO binary file format. More...
 
static const char *const KM3NET_DETECTOR_FILE_FORMAT = ".detx"
 KM3NeT standard ASCII format. More...
 
static const char *const ZIPPED_DETECTOR_FILE_FORMAT = ".gz"
 zipped KM3NeT standard ASCII format More...
 
static const char *const GDML_DETECTOR_FILE_FORMAT = ".gdml"
 KM3Sim input format. More...
 
static const char *const GDML_SCHEMA = getenv("GDML_SCHEMA_DIR")
 directory necessary for correct GDML header output More...
 
static const char *const CAN_MARGIN = getenv("CAN_MARGIN")
 extension of the detector size to comply with the can definition More...
 
static const char *const G4GDML_DEFAULT_SCHEMALOCATION = "http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"
 
static JRotation getRotation
 Function object to get rotation matrix to go from first to second module. More...
 
static const JGetDetectorVersion getDetectorVersion
 Function object to map detector variant to detector version. More...
 
static const JPutDetectorVersion putDetectorVersion (getDetectorVersion)
 Function object to map detector version to detector variant. More...
 
static const int LED_BEACON_PMT_TYPE = 2
 PMT type of LED beacon. More...
 
static const
JTransitionTimeGenerator 
getTransitionTime
 Function object to generate transition time. More...
 
static const
JTransitionTimeProbability 
getTransitionTimeProbability
 Function object of transition time prabability. More...
 
static const
JTransitionTimeProbability2D 
getTransitionTimeProbability2D
 Function object of twofold transition time prabability. More...
 
static const JGetPMTStatusBit getPMTStatusBit
 Function object to map key to PMT status bit. More...
 
static const JPutPMTStatusBit putPMTStatusBit (getPMTStatusBit)
 Function object to map PMT status bit to key. More...
 
static const JStringCounter getNumberOfStrings
 Function object to count unique strings. More...
 

Detailed Description

Auxiliary classes and methods for detector calibration.

Auxiliary classes and methods for detector calibration and simulation.

Author
mdejong

Typedef Documentation

Type definition of PMT base output.

Definition at line 27 of file JCLBSimulator.hh.

Type list of detector types.

Definition at line 42 of file JDetectorAddressMapToolkit.hh.

PMT high voltage calibration.

Definition at line 415 of file JDetectorCalibration.hh.

PMT time calibration.

Definition at line 416 of file JDetectorCalibration.hh.

Module position.

Definition at line 417 of file JDetectorCalibration.hh.

Module rotation.

Definition at line 418 of file JDetectorCalibration.hh.

typedef double JDETECTOR::JRateL0_t

Type definition of singles rate [Hz].

Definition at line 21 of file JK40Rates.hh.

Type definition of count rate as a function of multiplicty [Hz] The multiples rate start counting at two-fold coincidences.

Definition at line 27 of file JK40Rates.hh.

Type definition of multiplicity.

Definition at line 33 of file JK40Rates.hh.

typedef JLANG::JComparator<double (JVector3D::*)() const> JDETECTOR::JModuleComparator

Type definition of a module comparator using 3D position information.

Definition at line 22 of file JModuleComparator.hh.

Definition at line 16 of file JModuleIdentifier.hh.

Type definition of map PMT identifier to PMT parameters.

Definition at line 47 of file JPMTParametersMap.hh.

Function Documentation

bool JDETECTOR::operator< ( const JAnchor first,
const JAnchor second 
)
inline

Sort anchors in ascending distance from (0,0).

Parameters
firstfirst anchor
secondsecond anchor
Returns
true if first anchor closer to (0,0); else false

Definition at line 99 of file JAnchor.hh.

100  {
101  return first.getLengthSquared() < second.getLengthSquared();
102  }
double getLengthSquared() const
Get length squared.
Definition: JVector2D.hh:187
template<class T >
double JDETECTOR::getTime ( const T t1,
const JCalibration cal 
)
inline

Get calibrated time.

Parameters
t1time [ns]
calcalibration
Returns
time [ns]

Definition at line 208 of file JDetector/JCalibration.hh.

209  {
210  return JCalibrator<T>::getTime(t1, cal);
211  }
double getTime(const Hit &hit)
Get true time of hit.
template<class T >
double JDETECTOR::putTime ( const T t1,
const JCalibration cal 
)
inline

Get de-calibrated time.

Parameters
t1time [ns]
calcalibration
Returns
time [ns]

Definition at line 222 of file JDetector/JCalibration.hh.

223  {
224  return JCalibrator<T>::putTime(t1, cal);
225  }
double putTime(const T &t1, const JCalibration &cal)
Get de-calibrated time.
template<class T >
double JDETECTOR::getToT ( const T tot,
const JCalibration cal 
)
inline

Get calibrated time-over-threshold of hit.

Parameters
tottime-over-threshold [ns]
calcalibration
Returns
time-over-threshold [ns]

Definition at line 236 of file JDetector/JCalibration.hh.

237  {
238  return JCalibrator<T>::getToT(tot, cal);
239  }
double getToT(const T &tot, const JCalibration &cal)
Get calibrated time-over-threshold of hit.
template<class T >
double JDETECTOR::putToT ( const T tot,
const JCalibration cal 
)
inline

Get de-calibrated time-over-threshold of hit.

Parameters
tottime-over-threshold [ns]
calcalibration
Returns
time-over-threshold [ns]

Definition at line 250 of file JDetector/JCalibration.hh.

251  {
252  return JCalibrator<T>::putToT(tot, cal);
253  }
double putToT(const T &tot, const JCalibration &cal)
Get de-calibrated time-over-threshold of hit.
bool JDETECTOR::hasDetector ( JType< JPPM_DU_t type,
const int  id 
)
inline

Check validity of detector identifier.

Parameters
typedetector type
iddetector identifier
Returns
true if valid match; else false

Definition at line 52 of file JDetectorAddressMapToolkit.hh.

52 { return id == 1; }
bool JDETECTOR::hasDetector ( JType< JKM3NeT_t type,
const int  id 
)
inline

Definition at line 53 of file JDetectorAddressMapToolkit.hh.

53 { return id >= 2 && id <= 100000; }
bool JDETECTOR::hasDetector ( JType< JMonteCarlo_t type,
const int  id 
)
inline

Definition at line 54 of file JDetectorAddressMapToolkit.hh.

54 { return id >= -100000 && id <= -2; }
template<class JDetector_t >
JDetectorAddressMap& JDETECTOR::getDetectorAddressMap ( )
inline

Get detector address map.

Returns
detector address map

Definition at line 363 of file JDetectorAddressMapToolkit.hh.

364  {
366 
367  return demo;
368  }
Template lookup table for PMT addresses in detector.
template<class JDetector_t >
JModuleAddressMap& JDETECTOR::getModuleAddressMap ( int  id)
inline

Get module address map.

Parameters
idmodule identifier
Returns
module address map

Definition at line 378 of file JDetectorAddressMapToolkit.hh.

379  {
380  return getDetectorAddressMap<JDetector_t>().get(id);
381  }
template<class JDetector_t >
const JPMTAddressTranslator& JDETECTOR::getPMTAddressTranslator ( int  id,
int  tdc 
)
inline

Get PMT address translator for given module identifier and TDC channel.

Parameters
idmodule identifier
tdcTDC
Returns
PMT address translator

Definition at line 392 of file JDetectorAddressMapToolkit.hh.

393  {
394  return getModuleAddressMap<JDetector_t>(id).getAddressTranslator(tdc);
395  }
template<class JDetector_t >
int JDETECTOR::getPMTLogicalIndex ( int  id,
int  tdc 
)
inline

Get PMT logical index for given module identifier and TDC channel.

Parameters
idmodule identifier
tdcTDC
Returns
PMT logical index

Definition at line 406 of file JDetectorAddressMapToolkit.hh.

407  {
408  return getModuleAddressMap<JDetector_t>(id).getIndex(tdc);
409  }
int getIndex()
Get index for user I/O manipulation.
Definition: JPrint.hh:27
JDetectorAddressMap& JDETECTOR::getDetectorAddressMap ( const int  id)
inline

Get detector address map.

Parameters
iddetector identifier
Returns
detector address map

Definition at line 487 of file JDetectorAddressMapToolkit.hh.

488  {
490  }
T get(const JHead &header)
Get object from header.
bool JDETECTOR::hasDetectorAddressMap ( const int  id)
inline

Check if detector address map is available.

Parameters
iddetector identifier
Returns
true if detector address map available; else false

Definition at line 499 of file JDetectorAddressMapToolkit.hh.

500  {
502  }
Auxiliary class to extract detector address map from detector identifier.
bool JDETECTOR::is_valid ( const json js)
inline

Check validity of JSon data.

Parameters
jsJSon data
Returns
true if valid; else false

Definition at line 101 of file JDetectorCalibration.hh.

102  {
103  return js.contains(Result_t) && js[Result_t] == OK_t;
104  }
static const std::string OK_t
static const std::string Result_t
std::string JDETECTOR::get_date_string ( const std::time_t &  time)
inline

Create ISO 8601 date string for output file header.

Parameters
timeUnix timestamp
Returns
ISO 8601 timestamp corresponding to input time

Definition at line 113 of file JDetectorCalibration.hh.

114  {
115  using namespace std;
116 
117  const int N = 256;
118 
119  char buffer[N];
120 
121  strftime(buffer, N, "%FT%T%z", localtime(&time));
122 
123  return string(buffer);
124  }
then usage $script[input file[working directory[option]]] nWhere option can be N
Definition: JMuonPostfit.sh:37
template<class T >
std::vector<std::string> JDETECTOR::get_string_array ( T  value)
inline

Cast single value to array of strings, conform the DB-format.

Parameters
valuevalue
Returns
std::vector containing value casted to string

Definition at line 134 of file JDetectorCalibration.hh.

135  {
136  using namespace std;
137 
138  return vector<string>{ to_string(value) };
139  }
std::string to_string(const T &value)
Convert value to string.
double JDETECTOR::retrieve_value ( std::vector< std::string >  string_value_array)
inline

Retrieve value from json array of strings.

Parameters
string_value_arrayarray of string-casted values
Returns
double-casted value

Definition at line 148 of file JDetectorCalibration.hh.

149  {
150  return std::stod(string_value_array[0]);
151  }
void JDETECTOR::to_json ( json js,
const JPMTCalibration_t object 
)
inline

Convert PMT time calibration to JSon.

Parameters
jsjson
objectPMT time calibration

Definition at line 188 of file JDetectorCalibration.hh.

189  {
190  js = json{ { PMTSerial_t, object.getID() },
191  { T0_t, object.getT0() } };
192  }
static const std::string T0_t
static const std::string PMTSerial_t
nlohmann::json json
void JDETECTOR::from_json ( const json js,
JPMTCalibration_t object 
)
inline

Convert JSon to PMT time calibration.

Parameters
jsjson
objectPMT time calibration

Definition at line 201 of file JDetectorCalibration.hh.

202  {
203  object.setID(js.at(PMTSerial_t).get<int>());
204 
205  object.setT0(js.at(T0_t).get<double>());
206  }
static const std::string T0_t
static const std::string PMTSerial_t
void JDETECTOR::to_json ( json js,
const JHVCalibration_t object 
)
inline

Convert PMT high-voltage calibration to JSon.

Parameters
jsjson
objectPMT high-voltage calibration

Definition at line 256 of file JDetectorCalibration.hh.

257  {
258  std::ostringstream os;
259 
260  os << object.getUPI();
261 
262  js[UPI_t] = os.str();
263  js[Test_t + Result_t] = object.result;
265  { Unit_t, Volt_t },
266  { Values_t, get_string_array(object.supplyVoltage) } };
267  js[Test_t + Parameters_t][1] = json{ { Name_t, PMTGain_t },
268  { Unit_t, Unitless_t },
269  { Values_t, get_string_array(object.PMTgain) } };
270  js[Test_t + Parameters_t][2] = json{ { Name_t, RunNumber_t },
271  { Unit_t, Unitless_t },
272  { Values_t, object.runNumberList } };
273  }
static const std::string PMTGain_t
static const std::string Name_t
static const std::string PMTSupplyVoltage_t
static const std::string Unit_t
static const std::string UPI_t
static const std::string Result_t
static const std::string Volt_t
static const std::string Test_t
static const std::string RunNumber_t
static const std::string Values_t
nlohmann::json json
static const std::string Parameters_t
static const std::string Unitless_t
std::vector< std::string > get_string_array(T value)
Cast single value to array of strings, conform the DB-format.
void JDETECTOR::from_json ( const json js,
JHVCalibration_t object 
)
inline

Convert JSon to PMT high-voltage calibration.

Parameters
jsjson
objectPMT high-voltage calibration

Definition at line 282 of file JDetectorCalibration.hh.

283  {
284  using namespace std;
285 
286  stringstream is(js.at(UPI_t).get<string>());
287 
288  is >> static_cast<JUPI&>(object);
289 
290  object.result = js.at(Test_t + Result_t).get<string>();
291  object.supplyVoltage = retrieve_value(js.at(Test_t + Parameters_t)[0].at(Values_t).get<vector<string>>());
292  object.PMTgain = retrieve_value(js.at(Test_t + Parameters_t)[1].at(Values_t).get<vector<string>>());
293  object.runNumberList = js.at(Test_t + Parameters_t)[2].at(Values_t).get<vector<string>>();
294  }
static const std::string UPI_t
double retrieve_value(std::vector< std::string > string_value_array)
Retrieve value from json array of strings.
is
Definition: JDAQCHSM.chsm:167
static const std::string Result_t
static const std::string Test_t
static const std::string Values_t
static const std::string Parameters_t
void JDETECTOR::to_json ( json js,
const JModulePosition_t object 
)
inline

Convert module position to JSon.

Parameters
jsjson
objectmodule position

Definition at line 331 of file JDetectorCalibration.hh.

332  {
333  js = json{ { DOMId_t, object.getID() },
334  { PX_t, object.getX() },
335  { PY_t, object.getY() },
336  { PZ_t, object.getZ() } };
337  }
static const std::string PZ_t
static const std::string DOMId_t
static const std::string PX_t
static const std::string PY_t
nlohmann::json json
void JDETECTOR::from_json ( const json js,
JModulePosition_t object 
)
inline

Convert JSon to module position.

Parameters
jsjson
objectmodule position

Definition at line 346 of file JDetectorCalibration.hh.

347  {
348  object.setID(js.at(DOMId_t).get<int>());
349 
350  object.setPosition(JPosition3D(js.at(PX_t).get<double>(),
351  js.at(PY_t).get<double>(),
352  js.at(PZ_t).get<double>()));
353  }
static const std::string PZ_t
static const std::string DOMId_t
static const std::string PX_t
static const std::string PY_t
void JDETECTOR::to_json ( json js,
const JModuleRotation_t object 
)
inline

Convert module rotation to JSon.

Parameters
jsjson
objectmodule rotation

Definition at line 389 of file JDetectorCalibration.hh.

390  {
391  js = json{ { DOMId_t, object.getID() },
392  { Q0_t, object.getA() },
393  { QX_t, object.getB() },
394  { QY_t, object.getC() },
395  { QZ_t, object.getD() } };
396  }
static const std::string Q0_t
static const std::string DOMId_t
static const std::string QZ_t
nlohmann::json json
static const std::string QY_t
static const std::string QX_t
void JDETECTOR::from_json ( const json js,
JModuleRotation_t object 
)
inline

Convert JSon to module rotation.

Parameters
jsjson
objectmodule rotation

Definition at line 405 of file JDetectorCalibration.hh.

406  {
407  object.setID(js.at(DOMId_t).get<int>());
408 
409  object.setQuaternion(JQuaternion3D(js.at(Q0_t).get<double>(),
410  js.at(QX_t).get<double>(),
411  js.at(QY_t).get<double>(),
412  js.at(QZ_t).get<double>()));
413  }
static const std::string Q0_t
static const std::string DOMId_t
static const std::string QZ_t
static const std::string QY_t
static const std::string QX_t
JDetectorHeader JDETECTOR::getARCADetectorHeader ( )
inline

Get detector header for ARCA.

Returns
detector header

Definition at line 223 of file JDetectorHeader.hh.

224  {
225  return JDetectorHeader(JUTCTimeRange(0.0, 999999999999.9),
226  JUTMGrid ("UTM", "WGS84", "33N"),
227  JUTMPosition (587600, 4016800, -3450));
228  }
Data structure for detector header.
JDetectorHeader JDETECTOR::getORCADetectorHeader ( )
inline

Get detector header for ORCA.

Returns
detector header

Definition at line 235 of file JDetectorHeader.hh.

236  {
237  return JDetectorHeader(JUTCTimeRange(0.0, 999999999999.9),
238  JUTMGrid ("UTM", "WGS84", "32N"),
239  JUTMPosition (256500, 4743000, -2425));
240  }
Data structure for detector header.
double JDETECTOR::getMaximalDistance ( const JDetector detector)
inline

Get maximal distance between modules in detector.

Parameters
detectordetector
Returns
maximal distance [m]

Definition at line 81 of file JDetectorToolkit.hh.

82  {
83  double dmax = 0.0;
84 
85  for (JDetector::const_iterator i = detector.begin(); i != detector.end(); ++i) {
86  for (JDetector::const_iterator j = detector.begin(); j != i; ++j) {
87  if (i->getDistance(*j) > dmax) {
88  dmax = i->getDistance(*j);
89  }
90  }
91  }
92 
93  return dmax;
94  }
int j
Definition: JPolint.hh:634
double JDETECTOR::GetXrotationG4 ( const JVersor3D  dir)
inline

Get rotation over X axis in Geant4 coordinate system.

Parameters
dirdirection
Returns
X-rotation [deg]

Definition at line 103 of file JDetectorToolkit.hh.

104  {
105  const double phi = atan2(dir.getDY(), dir.getDZ())*(180.0/PI);
106 
107  if (phi < 0.0){
108  return phi + 360.0;
109  }
110  else{
111  return phi;
112  }
113  }
static const double PI
Constants.
Definition: JConstants.hh:20
double getDY() const
Get y direction.
Definition: JVersor3D.hh:103
double getDZ() const
Get z direction.
Definition: JVersor3D.hh:114
double JDETECTOR::GetYrotationG4 ( const JVersor3D  dir)
inline

Get rotation over Y axis in Geant4 coordinate system.

Parameters
dirdirection
Returns
Y-rotation [deg]

Definition at line 122 of file JDetectorToolkit.hh.

123  {
124  return asin(-dir.getDX())*(180.0/PI);
125  }
static const double PI
Constants.
Definition: JConstants.hh:20
double getDX() const
Get x direction.
Definition: JVersor3D.hh:92
void JDETECTOR::read_gdml ( std::istream &  ,
const JDetector  
)
inline

Definition at line 128 of file JDetectorToolkit.hh.

129  {}
void JDETECTOR::write_gdml ( std::ostream &  out,
const JDetector detector 
)
inline

Writes KM3Sim GDML input file from detector.

Parameters
outoutput stream
detectordetector

Definition at line 138 of file JDetectorToolkit.hh.

139  {
140 
141 
142  const JCylinder3D cylinder(detector.begin(), detector.end());
143  double can_margin;
144  if(CAN_MARGIN) can_margin = atof(CAN_MARGIN);
145  else{
146  std::cout<<"CAN_MARGIN not defined! Setting standard CAN_MARGIN = 350 m"<<std::endl;
147  can_margin = 5*70; //this is given in meters like all the dimensions in the GDML file (look at the unit field of every position and solid definition)
148  }
149  // Detector height is bascially just a distance between the highest and the lowest DOM
150  //double Detector_Height = cylinder.getZmax() - cylinder.getZmin();
151  // Distance from the center of the lowest DOM to the seabed
152  //double Seabed_Distance = cylinder.getZmin();
153 
154  // To translate Z coordinate from detx format which corresponds to the distance from the seabed one has to perform a following calculation
155  // Dom_Z_GDML = Dom_Z_Detx - Distance to the seabed from the lowest DOM - Detector_height/2
156 
157  //double DistanceOfSeabedFromLowestOM = Seabed_Distance;
158  // For now, the size of the WorldBox is fixed to 2200 meters
159  //const double WorldBoxHeight = 2200.;
160 
161  const double WorldCylinderHeight = 2*(cylinder.getZmax() - cylinder.getZmin() + can_margin + 50); //
162  const double WorldRadius = cylinder.getRadius() + can_margin + 50;
163 
164  std::cout<<WorldCylinderHeight/2<<std::endl;
165  std::cout<<WorldRadius<<std::endl;
166 
167  // Below formula comes directly from the note by Apostolos, can be used to reproduce the first GDML format of km3sim
168  //double Crust_Z_size = WorldBoxHeight/2-Detector_Height/2-DistanceOfSeabedFromLowestOM; Formula for obsolete coordinate covention, where Z_seabed != 0
169  //double Crust_Z_position = -WorldBoxHeight/4-Detector_Height/4-DistanceOfSeabedFromLowestOM/2; Formula for obsolete coordinate covention, where Z_seabed != 0
170 
171  //use this if you want to use WorldBox as the World Volume
172  //const double Crust_Z_size = WorldBoxHeight/2;
173  //const double Crust_Z_position= -WorldBoxHeight/4;
174 
175  const double Crust_Z_size = WorldCylinderHeight/2;
176  const double Crust_Z_position= -WorldCylinderHeight/4;
177 
178  out<<"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<gdml xmlns:gdml=\"http://cern.ch/2001/Schemas/GDML\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"";
179  if(!GDML_SCHEMA){
180  std::cout<<"GDML_SCHEMA_DIR NOT DEFINED! Setting default path"<<std::endl;
181  //out<<"http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd\">\n\n\n";
182  out<<G4GDML_DEFAULT_SCHEMALOCATION<<"\">\n\n\n";
183  }
184  else{
185  out<<GDML_SCHEMA<<"gdml.xsd\">\n\n\n";
186  }
187  out<<"<define>\n";
188  out<<"<rotation name=\"identity\"/>\n<position name=\"zero\"/>\n";
189 
190  int PMTs_NO = 0;
191  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
192 
193  const JFIT::JEstimator<JPoint3D> center(module->begin(), module->end());
194 
195  //out<<"<position name=\"PosString"<<module->getString()<<"_Dom"<<module->getID()<<"\" unit=\"m\" x=\""<<module->getX()<<"\" y=\""<<module->getY()<<"\" z=\""<<module->getZ() - Seabed_Distance-Detector_Height/2<<"\"/>\n"; Formula for obsolete coordinate covention, where Z_seabed != 0
196  out<<"<position name=\"PosString"<<module->getString()<<"_Dom"<<module->getID()<<"\" unit=\"m\" x=\""<<module->getX()<<"\" y=\""<<module->getY()<<"\" z=\""<<module->getZ()<<"\"/>\n";
197 
198  for (JModule::const_iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
199  //JVector3D vec;
200  //static_cast<JVector3D> (vec) = module->sub(*pmt);
201 
202  const JVector3D vec = static_cast<JVector3D>(*pmt).sub(center);
203  out<<"<position name=\"CathodPosition"<<pmt->getID()<<"_"<<module->getID()<<"\" unit=\"m\" x=\""<<vec.getX()<<"\" y=\""<<vec.getY()<<"\" z=\""<<vec.getZ()<<"\"/>\n";
204  out<<"<rotation name=\"CathodRotation"<<pmt->getID()<<"_"<<module->getID()<<"\" unit=\"deg\" x=\""<<GetXrotationG4(*pmt)<<"\" y=\""<<GetYrotationG4(*pmt)<<"\" z=\"0.000000\"/>\n";
205  out<<"<constant name=\"CathodID_"<<PMTs_NO<<"\" value=\""<<pmt->getID()<<"\"/>\n";
206  PMTs_NO++;
207  }
208 
209  }
210 
211  out<<"<position name=\"OMShift\" unit=\"m\" x=\"0\" y=\"0\" z=\"0.0392\"/>\n";
212  out<<"\n\n\n";
213  out<<"<!-- end of DU position definitions -->\n<position name=\"CrustPosition\" unit=\"m\" x=\"0\" y=\"0\" z=\""<<Crust_Z_position<<"\"/>\n";
214 
215  out<<"</define>\n";
216  out<<"<materials>\n";
217  out<<"</materials>\n";
218  out<<"<solids>\n";
219  //out<<" <box name=\"WorldBox\" lunit=\"m\" x=\"2200\" y=\"2200\" z=\"2200\"/>\n";
220  out<<" <box name=\"CrustBox\" lunit=\"m\" x=\"2200\" y=\"2200\" z=\""<<Crust_Z_size<<"\"/>\n";
221  out<<" <box name=\"StoreyBox\" lunit=\"m\" x=\"0.6\" y=\"0.6\" z=\"0.6\"/>\n";
222  out<<" <sphere name=\"OMSphere\" lunit=\"cm\" aunit=\"deg\" rmin=\"0.0\" rmax=\"21.6\" startphi=\"0.0\" deltaphi=\"360.0\" starttheta=\"0.0\" deltatheta=\"180.0\"/>\n";
223  out<<" <tube name=\"CathodTube\" lunit=\"cm\" aunit=\"deg\" rmin=\"0.0\" rmax=\"4.7462\" z=\"0.5\" startphi=\"0.0\" deltaphi=\"360.0\"/>\n";
224  out<<" <tube name=\"WorldTube\" lunit=\"m\" aunit=\"deg\" rmin=\"0.0\" rmax=\""<<WorldRadius<<"\" z=\""<<WorldCylinderHeight<<"\" startphi=\"0.0\" deltaphi=\"360.0\"/>\n";
225  out<<"</solids>\n\n\n";
226 
227  out<<"<structure>\n";
228  out<<" <volume name=\"CathodVolume\">\n";
229  out<<" <materialref ref=\"Cathod\"/>\n";
230  out<<" <solidref ref=\"CathodTube\"/>\n";
231  out<<" </volume>\n";
232 
233  out<<"<!-- OMVolume(s) construction -->\n";
234 
235  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
236 
237  out<<" <volume name=\"OMVolume"<<module->getID()<<"\">\n";
238  out<<" <materialref ref=\"Water\"/>\n";
239  out<<" <solidref ref=\"OMSphere\"/>\n";
240 
241  for (JModule::const_iterator pmt = module->begin(); pmt != module->end(); ++pmt) {
242  out<<" <physvol>\n";
243  out<<" <volumeref ref=\"CathodVolume\"/>\n";
244  out<<" <positionref ref=\"CathodPosition"<<pmt->getID()<<"_"<<module->getID()<<"\"/>\n";
245  out<<" <rotationref ref=\"CathodRotation"<<pmt->getID()<<"_"<<module->getID()<<"\"/>\n";
246  out<<" </physvol>\n";
247  }
248 
249  out<<" </volume>\n";
250  }
251 
252  out<<"<!-- StoreyVolume(s) construction -->\n";
253 
254  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
255  out<<" <volume name=\"StoreyVolume"<<module->getID()<<"\">\n";
256  out<<" <materialref ref=\"Water\"/>\n";
257  out<<" <solidref ref=\"StoreyBox\"/>\n";
258  out<<" <physvol>\n";
259  out<<" <volumeref ref=\"OMVolume"<<module->getID()<<"\"/>\n";
260  out<<" <positionref ref=\"OMShift\"/>\n";
261  //out<<" <positionref ref=\"zero\"/>\n";
262  out<<" <rotationref ref=\"identity\"/>\n";
263  out<<" </physvol>\n";
264  out<<" </volume>\n";
265  }
266 
267  out<<"<!-- Crust Volume construction-->\n";
268  out<<"<volume name=\"CrustVolume\">\n";
269  out<<" <materialref ref=\"Crust\"/>\n";
270  out<<" <solidref ref=\"CrustBox\"/>\n";
271  out<<"</volume>\n";
272 
273  out<<"<!-- World Volume construction-->\n";
274  out<<"<volume name=\"WorldVolume\">\n";
275  out<<" <materialref ref=\"Water\"/>\n";
276  //out<<" <solidref ref=\"WorldBox\"/>\n";
277  out<<" <solidref ref=\"WorldTube\"/>\n";
278 
279  out<<" <physvol>\n";
280  out<<" <volumeref ref=\"CrustVolume\"/>\n";
281  out<<" <positionref ref=\"CrustPosition\"/>\n";
282  out<<" <rotationref ref=\"identity\"/>\n";
283  out<<" </physvol>\n";
284 
285  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
286  out<<" <physvol>\n";
287  out<<" <volumeref ref=\"StoreyVolume"<<module->getID()<<"\"/>\n";
288  out<<" <positionref ref=\"PosString"<< module->getString() <<"_Dom"<< module->getID() <<"\"/>\n";
289  //out<<" <rotation x="{}" y="{}" z="0.0"/>\n'.format(Dom_Phi[i], Dom_Theta[i]))
290  out<<" <rotationref ref=\"identity\"/>\n";
291  out<<" </physvol>\n";
292  }
293 
294  out<<"</volume>\n";
295 
296  out<<"</structure>\n";
297  out<<"<setup name=\"Default\" version=\"1.0\">\n";
298  out<<"<world ref=\"WorldVolume\"/>\n";
299  out<<"</setup>\n";
300  out<<"</gdml>\n";
301  }
double GetYrotationG4(const JVersor3D dir)
Get rotation over Y axis in Geant4 coordinate system.
static const char *const GDML_SCHEMA
directory necessary for correct GDML header output
esac $JPP_DIR examples JDetector JTransitTime o $OUTPUT_FILE n N $NPE T $TTS_NS d $DEBUG for HISTOGRAM in tts tt2 pmt
Definition: JTransitTime.sh:36
JVector3D & sub(const JVector3D &vector)
Subtract vector.
Definition: JVector3D.hh:157
Cylinder object.
Definition: JCylinder3D.hh:37
Data structure for vector in three dimensions.
Definition: JVector3D.hh:33
int getID() const
Get identifier.
Definition: JObjectID.hh:55
double getY() const
Get y position.
Definition: JVector3D.hh:103
static const char *const CAN_MARGIN
extension of the detector size to comply with the can definition
double getX() const
Get x position.
Definition: JVector3D.hh:93
static const char *const G4GDML_DEFAULT_SCHEMALOCATION
Linear fit of crossing point (position) between axes (objects with position and direction).
double GetXrotationG4(const JVersor3D dir)
Get rotation over X axis in Geant4 coordinate system.
double getZ() const
Get z position.
Definition: JVector3D.hh:114
double JDETECTOR::getMaximalTime ( const JDetector detector)
inline

Get maximal time between modules in detector following causality.

Parameters
detectordetector
Returns
maximal time [ns]

Definition at line 310 of file JDetectorToolkit.hh.

311  {
313  }
double getIndexOfRefraction()
Get average index of refraction of water.
Definition: JConstants.hh:111
const double getInverseSpeedOfLight()
Get inverse speed of light.
Definition: JConstants.hh:100
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector.
double JDETECTOR::getMaximalTime ( const JDetector detector,
const double  roadWidth_m 
)
inline

Get maximal time between modules in detector following causality.

The road width corresponds to the maximal distance traveled by the light.

Parameters
detectordetector
roadWidth_mroad width [m]
Returns
maximal time [ns]

Definition at line 324 of file JDetectorToolkit.hh.

325  {
326  const double Dmax_m = getMaximalDistance(detector);
327 
328  return (sqrt((Dmax_m + roadWidth_m*getSinThetaC()) *
329  (Dmax_m - roadWidth_m*getSinThetaC())) +
330  roadWidth_m * getSinThetaC() * getTanThetaC()) * getInverseSpeedOfLight();
331  }
double getSinThetaC()
Get average sine of Cherenkov angle of water.
Definition: JConstants.hh:155
const double getInverseSpeedOfLight()
Get inverse speed of light.
Definition: JConstants.hh:100
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector.
double getTanThetaC()
Get average tangent of Cherenkov angle of water.
Definition: JConstants.hh:133
JTimeRange JDETECTOR::getTimeRange ( const JTimeRange timeRange,
const JModule module 
)
inline

Get de-calibrated time range.

The de-calibrated time range is corrected for minimal and maximal time offset of PMTs in given module.

Parameters
timeRangetime range [ns]
modulemodule
Returns
time range [ns]

Definition at line 343 of file JDetectorToolkit.hh.

344  {
345  if (!module.empty()) {
346 
347  JTimeRange time_range(JTimeRange::DEFAULT_RANGE);
348 
349  for (JModule::const_iterator pmt = module.begin(); pmt != module.end(); ++pmt) {
350 
351  const JCalibration& calibration = pmt->getCalibration();
352 
353  time_range.include(putTime(timeRange.getLowerLimit(), calibration));
354  time_range.include(putTime(timeRange.getUpperLimit(), calibration));
355  }
356 
357  return time_range;
358 
359  } else {
360 
361  return timeRange;
362  }
363  }
T getLowerLimit() const
Get lower limit.
Definition: JRange.hh:215
range_type include(argument_type x)
Include given value to range.
Definition: JRange.hh:399
Data structure for PMT calibration.
esac $JPP_DIR examples JDetector JTransitTime o $OUTPUT_FILE n N $NPE T $TTS_NS d $DEBUG for HISTOGRAM in tts tt2 pmt
Definition: JTransitTime.sh:36
double putTime(const T &t1, const JCalibration &cal)
Get de-calibrated time.
T getUpperLimit() const
Get upper limit.
Definition: JRange.hh:226
int JDETECTOR::getNumberOfPMTs ( const JModule module)
inline

Get number of PMTs.

Parameters
modulemodule
Returns
number of PMTs

Definition at line 372 of file JDetectorToolkit.hh.

373  {
374  return module.size();
375  }
int JDETECTOR::getNumberOfPMTs ( const JDetector detector)
inline

Get number of PMTs.

Parameters
detectordetector
Returns
number of PMTs

Definition at line 384 of file JDetectorToolkit.hh.

385  {
386  int number_of_pmts = 0;
387 
388  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
389  number_of_pmts += getNumberOfPMTs(*module);
390  }
391 
392  return number_of_pmts;
393  }
int getNumberOfPMTs(const JModule &module)
Get number of PMTs.
std::set<int> JDETECTOR::getStringIDs ( const JDetector detector)
inline

Get list of strings IDs.

Parameters
detectordetector
Returns
list of string IDs

Definition at line 402 of file JDetectorToolkit.hh.

403  {
404  std::set<int> buffer;
405 
406  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
407  buffer.insert(module->getString());
408  }
409 
410  return buffer;
411  }
int JDETECTOR::getNumberOfFloors ( const JDetector detector)
inline

Get number of floors.

Parameters
detectordetector
Returns
number of floors

Definition at line 420 of file JDetectorToolkit.hh.

421  {
422  std::set<int> buffer;
423 
424  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
425  buffer.insert(module->getFloor());
426  }
427 
428  return buffer.size();
429  }
int JDETECTOR::getNumberOfModules ( const JDetector detector)
inline

Get number of modules.

Parameters
detectordetector
Returns
number of modules

Definition at line 438 of file JDetectorToolkit.hh.

439  {
440  std::set<int> buffer;
441 
442  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
443  buffer.insert(module->getID());
444  }
445 
446  return buffer.size();
447  }
void JDETECTOR::load ( const JString file_name,
JDetector detector 
)
inline

Load detector from input file.

Supported file formats:

Parameters
file_namefile name
detectordetector

Definition at line 462 of file JDetectorToolkit.hh.

463  {
464  using namespace std;
465  using namespace JIO;
466 
467  if (file_name.endsWith(GENDET_DETECTOR_FILE_FORMAT)) {
468 
469  JMonteCarloDetector buffer(true);
470 
471  ifstream in(file_name.c_str());
472 
473  if (!in) {
474  THROW(JFileOpenException, "File not opened: " << file_name);
475  }
476 
477  in >> buffer;
478 
479  in.close();
480 
481  detector.swap(buffer);
482 
483  } else if (file_name.endsWith(BINARY_DETECTOR_FILE_FORMAT)) {
484 
485  JFileStreamReader in(file_name.c_str());
486 
487  if (!in) {
488  THROW(JFileOpenException, "File not opened: " << file_name);
489  }
490 
491  detector.read(in);
492 
493  in.close();
494 
495  } else if (file_name.endsWith(KM3NET_DETECTOR_FILE_FORMAT)) {
496 
497  ifstream in(file_name.c_str());
498 
499  if (!in) {
500  THROW(JFileOpenException, "File not opened: " << file_name);
501  }
502 
503  in >> detector;
504 
505  in.close();
506 
507  } else if (file_name.endsWith(ZIPPED_DETECTOR_FILE_FORMAT)) {
508 
509  igzstream in(file_name.c_str());
510 
511  if (!in) {
512  THROW(JFileOpenException, "File not opened: " << file_name);
513  }
514 
515  in >> detector;
516 
517  in.close();
518 
519  } else {
520 
521  THROW(JProtocolException, "Protocol not defined: " << file_name);
522  }
523  }
Exception for opening of file.
Definition: JException.hh:342
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
Definition: JSirene.sh:45
virtual JReader & read(JReader &in)
Read from input.
Definition: JDetector.hh:381
bool endsWith(const std::string &suffix) const
Test if this string ends with the specified suffix.
Definition: JString.hh:156
Monte Carlo detector (i.e. so-called .det file).
Protocol exception.
Definition: JException.hh:630
static const char *const KM3NET_DETECTOR_FILE_FORMAT
KM3NeT standard ASCII format.
static const char *const ZIPPED_DETECTOR_FILE_FORMAT
zipped KM3NeT standard ASCII format
static const char *const GENDET_DETECTOR_FILE_FORMAT
File name extensions.
static const char *const BINARY_DETECTOR_FILE_FORMAT
JIO binary file format.
Binary buffered file input.
void JDETECTOR::store ( const JString file_name,
const JDetector detector 
)
inline

Store detector to output file.

Supported file formats:

Parameters
file_namefile name
detectordetector

Definition at line 538 of file JDetectorToolkit.hh.

539  {
540  using namespace std;
541  using namespace JIO;
542 
543  if (file_name.endsWith(BINARY_DETECTOR_FILE_FORMAT)) {
544 
545  JFileStreamWriter out(file_name.c_str());
546 
547  detector.write(out);
548 
549  out.close();
550 
551  } else if (file_name.endsWith(KM3NET_DETECTOR_FILE_FORMAT)) {
552 
553  std::ofstream out(file_name.c_str());
554 
555  out << detector;
556 
557  out.close();
558 
559  } else if (file_name.endsWith(ZIPPED_DETECTOR_FILE_FORMAT)) {
560 
561  ogzstream out(file_name.c_str());
562 
563  out << detector;
564 
565  out.close();
566 
567  } else if (file_name.endsWith(GDML_DETECTOR_FILE_FORMAT)) {
568 
569  std::ofstream out(file_name.c_str());
570 
571  write_gdml(out, detector);
572 
573  out.close();
574 
575  } else {
576 
577  THROW(JProtocolException, "Protocol not defined: " << file_name);
578  }
579  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
virtual JWriter & write(JWriter &out) const
Write to output.
Definition: JDetector.hh:411
bool endsWith(const std::string &suffix) const
Test if this string ends with the specified suffix.
Definition: JString.hh:156
Protocol exception.
Definition: JException.hh:630
static const char *const KM3NET_DETECTOR_FILE_FORMAT
KM3NeT standard ASCII format.
static const char *const ZIPPED_DETECTOR_FILE_FORMAT
zipped KM3NeT standard ASCII format
static const char *const BINARY_DETECTOR_FILE_FORMAT
JIO binary file format.
Binary buffered file output.
static const char *const GDML_DETECTOR_FILE_FORMAT
KM3Sim input format.
void write_gdml(std::ostream &out, const JDetector &detector)
Writes KM3Sim GDML input file from detector.
const JModule& JDETECTOR::getModule ( const JModuleAddressMap memo,
const int  id,
const JLocation location = JLocation() 
)
inline

Get module according module address map.

Parameters
memomodule address map
idmodule identifier
locationmodule location
Returns
module

Definition at line 590 of file JDetectorToolkit.hh.

593  {
594  static JModule module;
595 
596 
597  module.setID(id);
598 
599  module.setLocation(location);
600 
601  module.resize(memo.size());
602 
603  if (memo.has( 0)) { module[memo[ 0].tdc] = JPMT( 1, JAxis3D(JVector3D(+0.000, +0.000, -0.200), JVersor3D(+0.000, +0.000, -1.000))); }
604 
605  if (memo.has( 1)) { module[memo[ 1].tdc] = JPMT( 2, JAxis3D(JVector3D(+0.000, +0.105, -0.170), JVersor3D(+0.000, +0.527, -0.850))); }
606  if (memo.has( 2)) { module[memo[ 2].tdc] = JPMT( 3, JAxis3D(JVector3D(+0.091, +0.053, -0.170), JVersor3D(+0.456, +0.263, -0.850))); }
607  if (memo.has( 3)) { module[memo[ 3].tdc] = JPMT( 4, JAxis3D(JVector3D(+0.091, -0.053, -0.170), JVersor3D(+0.456, -0.263, -0.850))); }
608  if (memo.has( 4)) { module[memo[ 4].tdc] = JPMT( 5, JAxis3D(JVector3D(+0.000, -0.105, -0.170), JVersor3D(+0.000, -0.527, -0.850))); }
609  if (memo.has( 5)) { module[memo[ 5].tdc] = JPMT( 6, JAxis3D(JVector3D(-0.091, -0.053, -0.170), JVersor3D(-0.456, -0.263, -0.850))); }
610  if (memo.has( 6)) { module[memo[ 6].tdc] = JPMT( 7, JAxis3D(JVector3D(-0.091, +0.053, -0.170), JVersor3D(-0.456, +0.263, -0.850))); }
611 
612  if (memo.has( 7)) { module[memo[ 7].tdc] = JPMT( 8, JAxis3D(JVector3D(+0.083, +0.144, -0.111), JVersor3D(+0.416, +0.720, -0.555))); }
613  if (memo.has( 8)) { module[memo[ 8].tdc] = JPMT( 9, JAxis3D(JVector3D(+0.166, +0.000, -0.111), JVersor3D(+0.832, +0.000, -0.555))); }
614  if (memo.has( 9)) { module[memo[ 9].tdc] = JPMT(10, JAxis3D(JVector3D(+0.083, -0.144, -0.111), JVersor3D(+0.416, -0.720, -0.555))); }
615  if (memo.has(10)) { module[memo[10].tdc] = JPMT(11, JAxis3D(JVector3D(-0.083, -0.144, -0.111), JVersor3D(-0.416, -0.720, -0.555))); }
616  if (memo.has(11)) { module[memo[11].tdc] = JPMT(12, JAxis3D(JVector3D(-0.166, +0.000, -0.111), JVersor3D(-0.832, +0.000, -0.555))); }
617  if (memo.has(12)) { module[memo[12].tdc] = JPMT(13, JAxis3D(JVector3D(-0.083, +0.144, -0.111), JVersor3D(-0.416, +0.720, -0.555))); }
618 
619  if (memo.has(13)) { module[memo[13].tdc] = JPMT(14, JAxis3D(JVector3D(+0.000, +0.191, -0.059), JVersor3D(+0.000, +0.955, -0.295))); }
620  if (memo.has(14)) { module[memo[14].tdc] = JPMT(15, JAxis3D(JVector3D(+0.165, +0.096, -0.059), JVersor3D(+0.827, +0.478, -0.295))); }
621  if (memo.has(15)) { module[memo[15].tdc] = JPMT(16, JAxis3D(JVector3D(+0.165, -0.096, -0.059), JVersor3D(+0.827, -0.478, -0.295))); }
622  if (memo.has(16)) { module[memo[16].tdc] = JPMT(17, JAxis3D(JVector3D(+0.000, -0.191, -0.059), JVersor3D(+0.000, -0.955, -0.295))); }
623  if (memo.has(17)) { module[memo[17].tdc] = JPMT(18, JAxis3D(JVector3D(-0.165, -0.096, -0.059), JVersor3D(-0.827, -0.478, -0.295))); }
624  if (memo.has(18)) { module[memo[18].tdc] = JPMT(19, JAxis3D(JVector3D(-0.165, +0.096, -0.059), JVersor3D(-0.827, +0.478, -0.295))); }
625 
626  if (memo.has(19)) { module[memo[19].tdc] = JPMT(20, JAxis3D(JVector3D(+0.096, +0.165, +0.059), JVersor3D(+0.478, +0.827, +0.295))); }
627  if (memo.has(20)) { module[memo[20].tdc] = JPMT(21, JAxis3D(JVector3D(+0.191, +0.000, +0.059), JVersor3D(+0.955, +0.000, +0.295))); }
628  if (memo.has(21)) { module[memo[21].tdc] = JPMT(22, JAxis3D(JVector3D(+0.096, -0.165, +0.059), JVersor3D(+0.478, -0.827, +0.295))); }
629  if (memo.has(22)) { module[memo[22].tdc] = JPMT(23, JAxis3D(JVector3D(-0.096, -0.165, +0.059), JVersor3D(-0.478, -0.827, +0.295))); }
630  if (memo.has(23)) { module[memo[23].tdc] = JPMT(24, JAxis3D(JVector3D(-0.191, +0.000, +0.059), JVersor3D(-0.955, +0.000, +0.295))); }
631  if (memo.has(24)) { module[memo[24].tdc] = JPMT(25, JAxis3D(JVector3D(-0.096, +0.165, +0.059), JVersor3D(-0.478, +0.827, +0.295))); }
632 
633  if (memo.has(25)) { module[memo[25].tdc] = JPMT(26, JAxis3D(JVector3D(+0.000, +0.166, +0.111), JVersor3D(+0.000, +0.832, +0.555))); }
634  if (memo.has(26)) { module[memo[26].tdc] = JPMT(27, JAxis3D(JVector3D(+0.144, +0.083, +0.111), JVersor3D(+0.720, +0.416, +0.555))); }
635  if (memo.has(27)) { module[memo[27].tdc] = JPMT(28, JAxis3D(JVector3D(+0.144, -0.083, +0.111), JVersor3D(+0.720, -0.416, +0.555))); }
636  if (memo.has(28)) { module[memo[28].tdc] = JPMT(29, JAxis3D(JVector3D(+0.000, -0.166, +0.111), JVersor3D(+0.000, -0.832, +0.555))); }
637  if (memo.has(29)) { module[memo[29].tdc] = JPMT(30, JAxis3D(JVector3D(-0.144, -0.083, +0.111), JVersor3D(-0.720, -0.416, +0.555))); }
638  if (memo.has(30)) { module[memo[30].tdc] = JPMT(31, JAxis3D(JVector3D(-0.144, +0.083, +0.111), JVersor3D(-0.720, +0.416, +0.555))); }
639 
640  module.compile();
641 
642  return module;
643  }
Data structure for a composite optical module.
Definition: JModule.hh:50
void setLocation(const JLocation &location)
Set location.
Definition: JLocation.hh:91
Axis object.
Definition: JAxis3D.hh:38
Data structure for vector in three dimensions.
Definition: JVector3D.hh:33
Data structure for PMT geometry and calibration.
Definition: JPMT.hh:47
void compile()
Compile position of module from the positions and directions of the PMTs.
Definition: JModule.hh:211
void setID(const int id)
Set identifier.
Definition: JObjectID.hh:66
Data structure for normalised vector in three dimensions.
Definition: JVersor3D.hh:23
bool has(const int index) const
Test whether index is available.
const JModule& JDETECTOR::getModule ( const int  id,
const JLocation location = JLocation() 
)
inline

Get module corresponding to Antares storey.

Parameters
idmodule identifier
locationmodule location
Returns
module

Definition at line 653 of file JDetectorToolkit.hh.

655  {
656  using JTOOLS::PI;
657 
658  static JModule module;
659 
660  module.setID(id);
661 
662  module.setLocation(location);
663 
664  if (module.empty()) {
665 
666  module.resize(3);
667 
668  const double R = 0.5; // [m]
669 
670  const double st = sin(0.75*PI);
671  const double ct = cos(0.75*PI);
672 
673  for (int i = 0; i != 3; ++i) {
674 
675  const double phi = (2.0*PI*i) / 3.0;
676  const double cp = cos(phi);
677  const double sp = sin(phi);
678 
679  module[i] = JPMT(i, JAxis3D(JVector3D(R*st*cp, R*st*sp, R*ct), JVersor3D(st*cp, st*sp, ct)));
680  }
681  }
682 
683  return module;
684  }
Data structure for a composite optical module.
Definition: JModule.hh:50
void setLocation(const JLocation &location)
Set location.
Definition: JLocation.hh:91
static const double PI
Constants.
Definition: JConstants.hh:20
Axis object.
Definition: JAxis3D.hh:38
Data structure for vector in three dimensions.
Definition: JVector3D.hh:33
Data structure for PMT geometry and calibration.
Definition: JPMT.hh:47
then usage $script[distance] fi case set_variable R
Definition: JDrawLED.sh:40
void setID(const int id)
Set identifier.
Definition: JObjectID.hh:66
Data structure for normalised vector in three dimensions.
Definition: JVersor3D.hh:23
JPosition3D JDETECTOR::getPosition ( const JModule first,
const JModule second 
)
inline

Get position to go from first to second module.

Parameters
firstfirst module
secondsecond module
Returns
position

Definition at line 820 of file JDetectorToolkit.hh.

821  {
822  return second.getPosition() - first.getPosition();
823  }
const JPosition3D & getPosition() const
Get position.
Definition: JPosition3D.hh:129
JCalibration JDETECTOR::getCalibration ( const JCalibration first,
const JCalibration second 
)
inline

Get calibration to go from first to second calibration.

Parameters
firstfirst calibration
secondsecond calibration
Returns
calibration

Definition at line 833 of file JDetectorToolkit.hh.

834  {
835  return JCalibration(second.getT0() - first.getT0());
836  }
Data structure for PMT calibration.
double getT0() const
Get time offset.
std::vector<std::string> JDETECTOR::getDetectorVersions ( const JType< std::string > &  type)
inline

Get detector versions.

Note that the order of the versions is descending.

Parameters
typetype
Returns
versions

Definition at line 253 of file JDetectorVersion.hh.

254  {
255  return JLANG::make_array(putDetectorVersion.rbegin(), putDetectorVersion.rend(), &JPutDetectorVersion::value_type::second);
256  }
const std::vector< JValue_t > make_array(const JValue_t(&array)[N])
Method to create array of values.
Definition: JVectorize.hh:27
static const JPutDetectorVersion putDetectorVersion(getDetectorVersion)
Function object to map detector version to detector variant.
std::vector<JDetectorVersion::JVersion_t> JDETECTOR::getDetectorVersions ( const JType< JDetectorVersion::JVersion_t > &  type)
inline

Get detector versions.

Note that the order of the versions is descending.

Parameters
typetype
Returns
versions

Definition at line 267 of file JDetectorVersion.hh.

268  {
270  }
const std::vector< JValue_t > make_array(const JValue_t(&array)[N])
Method to create array of values.
Definition: JVectorize.hh:27
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
static const JPutDetectorVersion putDetectorVersion(getDetectorVersion)
Function object to map detector version to detector variant.
template<class T >
std::vector<T> JDETECTOR::getDetectorVersions ( )
inline

Get detector versions.

Returns
versions

Definition at line 279 of file JDetectorVersion.hh.

280  {
281  return getDetectorVersions(JType<T>());
282  }
std::vector< std::string > getDetectorVersions(const JType< std::string > &type)
Get detector versions.
std::string JDETECTOR::getLabel ( const JLocation location)
inline

Get module label for monitoring and other applications.


The format is "(XXXX,YY)", where XXXX is the string number and YY the floor.

Parameters
locationmodule location
Returns
label

Definition at line 246 of file JLocation.hh.

247  {
248  using namespace std;
249  using namespace JPP;
250 
251  return MAKE_STRING("(" << FILL(4,'0') << location.getString() << "." << FILL(2,'0') << location.getFloor() << ")");
252  }
int getFloor() const
Get floor number.
Definition: JLocation.hh:145
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:699
Auxiliary data structure for sequence of same character.
Definition: JPrint.hh:361
int getString() const
Get string number.
Definition: JLocation.hh:134
template<class JAttributes_t >
void JDETECTOR::setAttributes ( const JModule first,
const JModule second,
JAttributes_t &  attributes 
)

Template method to set module attributes.

This method should be overloaded for each type of module attributes.

Parameters
firstfirst module
secondsecond module
attributesmodule attributes
template<>
void JDETECTOR::setAttributes< JNullType > ( const JModule first,
const JModule second,
JNullType &  attributes 
)

Template specialisation to set no attributes for the default empty object.

Parameters
firstfirst module
secondsecond module
attributesmodule attributes

Definition at line 48 of file JModuleMapper.hh.

51  {}
bool JDETECTOR::operator< ( const JPMTIdentifier first,
const JPMTIdentifier second 
)
inline

Less than operator for PMT identifiers.

Parameters
firstPMT identifier
secondPMT identifier
Returns
true if first PMT lower than second PMT; else false

Definition at line 154 of file JPMTIdentifier.hh.

155  {
156  if (first.getModuleID() == second.getModuleID())
157  return first.getPMTAddress() < second.getPMTAddress();
158  else
159  return first.getModuleID() < second.getModuleID();
160  }
int getModuleID() const
Get module identifier.
int getPMTAddress() const
Get PMT identifier (= TDC).
bool JDETECTOR::operator== ( const JPMTIdentifier first,
const JPMTIdentifier second 
)
inline

Equal operator for PMT identifiers.

Parameters
firstPMT identifier
secondPMT identifier
Returns
true if first PMT equal second PMT; else false

Definition at line 170 of file JPMTIdentifier.hh.

171  {
172  return (first.getModuleID() == second.getModuleID() &&
173  first.getPMTAddress() == second.getPMTAddress());
174  }
int getModuleID() const
Get module identifier.
int getPMTAddress() const
Get PMT identifier (= TDC).
std::string JDETECTOR::getLabel ( const JPMTIdentifier id)
inline

Get PMT label for monitoring and other applications.


The format is "(XXXXXXXXXX,YY)", where XXXXXXXXXX is the module idetifier and YY the PMT readout channel.

Parameters
idPMT identifier
Returns
label

Definition at line 184 of file JPMTIdentifier.hh.

185  {
186  using namespace std;
187  using namespace JPP;
188 
189  return MAKE_STRING("(" << FILL(10,'0') << id.getID() << "," << FILL(2,'0') << id.getPMTAddress() << ")");
190  }
#define MAKE_STRING(A)
Make string.
Definition: JPrint.hh:699
Auxiliary data structure for sequence of same character.
Definition: JPrint.hh:361
double JDETECTOR::getSurvivalProbability ( const JPMTParameters parameters)
inline

Get model dependent probability that a one photo-electron hit survives the simulation of the PMT assuming QE = 1.

Parameters
parametersPMT parameters
Returns
probability

Definition at line 32 of file JPMTParametersToolkit.hh.

33  {
35  const int NPE = 1;
36 
37  data.QE = 1.0;
38 
40  }
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
virtual double getSurvivalProbability(const int NPE) const
Probability that a hit survives the simulation of the PMT.
Data structure for PMT parameters.
double QE
relative quantum efficiency
double JDETECTOR::getHitProbability ( const double  QE,
const double  mu 
)
inline

Get ratio of hit probabilities for given QE and expectation value of the number of photo-electrons.


The ratio corresponds to the hit probability with given QE divided by that with QE = 1.
The expectation value is defined for a two-fold (or higher) coincidence.

Parameters
QEQE
muexpectation value
Returns
ratio

Definition at line 52 of file JPMTParametersToolkit.hh.

53  {
54  if (mu > 0.0)
55  return (1.0 - exp(-QE*mu)) / (1.0 - exp(-mu));
56  else
57  return QE;
58  }
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -
double JDETECTOR::getMaximalHitProbability ( const double  mu)
inline

Get maximal ratio of hit probabilities for given QE and expectation value of the number of photo-electrons.


The ratio corresponds to the hit probability with infinite QE divided by that with QE = 1.
The expectation value is defined for a two-fold (or higher) coincidence.

Parameters
muexpectation value
Returns
ratio

Definition at line 69 of file JPMTParametersToolkit.hh.

70  {
71  using namespace std;
72 
73  if (mu > 0.0)
74  return 1.0 / (1.0 - exp(-mu));
75  else
76  return numeric_limits<double>::max();
77  }
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -
double JDETECTOR::getQE ( const double  R,
const double  mu 
)
inline

Get QE for given ratio of hit probabilities and expectation value of the number of photo-electrons.


The ratio corresponds to the hit probability with given QE divided by that with QE = 1.
The expectation value is defined for a two-fold (or higher) coincidence.

Parameters
Rratio
muexpectation value
Returns
QE

Definition at line 89 of file JPMTParametersToolkit.hh.

90  {
91  if (R < getMaximalHitProbability(mu)) {
92 
93  if (mu > 0.0)
94  return -log(1.0 - R*(1.0 - exp(-mu))) / mu;
95  else
96  return R;
97 
98  } else {
99 
100  THROW(JValueOutOfRange, "Inconsistent arguments at method getQE(" << R << "," << mu <<")");
101  }
102  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
then usage $script[distance] fi case set_variable R
Definition: JDrawLED.sh:40
double getMaximalHitProbability(const double mu)
Get maximal ratio of hit probabilities for given QE and expectation value of the number of photo-elec...
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -
bool JDETECTOR::operator< ( const JPhotoElectron first,
const JPhotoElectron second 
)
inline

Less than operator for photo-elecrons.

Parameters
firstfirst photo-electron
secondsecond photo-electron
Returns
true if first photo-electron earlier than second; else false

Definition at line 68 of file JPMTSimulator.hh.

69  {
70  return first.t_ns < second.t_ns;
71  }
bool JDETECTOR::operator< ( const JPMTSignal first,
const JPMTSignal second 
)
inline

Less than operator for PMT signals.

Parameters
firstfirst PMT signal
secondsecond PMT signal
Returns
true if first PMT signal earlier than second; else false

Definition at line 112 of file JPMTSimulator.hh.

113  {
114  return first.t_ns < second.t_ns;
115  }
double t_ns
time [ns]
bool JDETECTOR::operator< ( const JPMTPulse first,
const JPMTPulse second 
)
inline

Less than operator for PMT pulses.

Parameters
firstfirst PMT pulse
secondsecond PMT pulse
Returns
true if first PMT pulse earlier than second; else false

Definition at line 156 of file JPMTSimulator.hh.

157  {
158  return first.t_ns < second.t_ns;
159  }
double t_ns
time [ns]
JTimeRange JDETECTOR::getTimeRange ( const JPMTData< JPMTSignal > &  input)
inline

Get time range (i.e. earlist and latest hit time) of PMT data.

Parameters
inputPMT data
Returns
time range

Definition at line 285 of file JPMTSimulator.hh.

286  {
287  JTimeRange range(JTimeRange::DEFAULT_RANGE);
288 
289  for (JPMTData<JPMTSignal>::const_iterator hit = input.begin(); hit != input.end(); ++hit) {
290  range.include(hit->t_ns);
291  }
292 
293  return range;
294  }
JRange< double > JTimeRange
Type definition for time range.
std::vector< JElement_t >::const_iterator const_iterator
JTimeRange JDETECTOR::getTimeRange ( const JModuleData input)
inline

Get time range (i.e. earlist and latest hit time) of module data.

Parameters
inputmodule data
Returns
time range

Definition at line 303 of file JPMTSimulator.hh.

304  {
305  JTimeRange range(JTimeRange::DEFAULT_RANGE);
306 
307  for (JModuleData::const_iterator frame = input.begin(); frame != input.end(); ++frame) {
308  for (JModuleData::value_type::const_iterator hit = frame->begin(); hit != frame->end(); ++hit) {
309  range.include(hit->t_ns);
310  }
311  }
312 
313  return range;
314  }
JRange< double > JTimeRange
Type definition for time range.
std::vector<std::string> JDETECTOR::getPMTStatusBits ( const JType< std::string > &  type)
inline

Get PMT status bits.

Parameters
typetype
Returns
status bits

Definition at line 307 of file JStatus.hh.

308  {
310  }
static const JGetPMTStatusBit getPMTStatusBit
Function object to map key to PMT status bit.
Definition: JStatus.hh:292
const std::vector< JValue_t > make_array(const JValue_t(&array)[N])
Method to create array of values.
Definition: JVectorize.hh:27
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
std::vector<JStatus::JPMTStatusBits_t> JDETECTOR::getPMTStatusBits ( const JType< JStatus::JPMTStatusBits_t > &  type)
inline

Get PMT status bits.

Parameters
typetype
Returns
status bits

Definition at line 319 of file JStatus.hh.

320  {
321  return JPP::make_array(getPMTStatusBit.begin(), getPMTStatusBit.end(), &JGetPMTStatusBit::value_type::second);
322  }
static const JGetPMTStatusBit getPMTStatusBit
Function object to map key to PMT status bit.
Definition: JStatus.hh:292
const std::vector< JValue_t > make_array(const JValue_t(&array)[N])
Method to create array of values.
Definition: JVectorize.hh:27
template<class T >
std::vector<T> JDETECTOR::getPMTStatusBits ( )
inline

Get PMT status bits.

Returns
status bits

Definition at line 331 of file JStatus.hh.

332  {
333  return getPMTStatusBits(JType<T>());
334  }
std::vector< std::string > getPMTStatusBits(const JType< std::string > &type)
Get PMT status bits.
Definition: JStatus.hh:307
bool JDETECTOR::operator< ( const JVersion first,
const JVersion second 
)
inline

Less-than operator for versions.

Parameters
firstfirst version
secondsecond version
Returns
true if first version before second; else false

Definition at line 181 of file JVersion.hh.

182  {
183  return first.getVariant() < second.getVariant();
184  }
const std::string & getVariant() const
Get variant.
Definition: JVersion.hh:89

Variable Documentation

const double JDETECTOR::TIME_OVER_THRESHOLD_NS = 25.62

Specification for time-over-threshold corresponding to a one photo-electron pulse.

Definition at line 29 of file JDetector/JCalibration.hh.

const double JDETECTOR::NOMINAL_GAIN = 1.0

Specification for normalized gain corresponding to a one photo-electron pulse.

Definition at line 34 of file JDetector/JCalibration.hh.

const std::string JDETECTOR::User_t = "User"
static

Detector calibration key words for JSON I/O.

Definition at line 39 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Location_t = "Location"
static

Definition at line 40 of file JDetectorCalibration.hh.

const std::string JDETECTOR::StartTime_t = "StartTime"
static

Definition at line 41 of file JDetectorCalibration.hh.

const std::string JDETECTOR::EndTime_t = "EndTime"
static

Definition at line 42 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Comment_t = "Comment"
static

Definition at line 43 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Type_t = "Type"
static

Definition at line 46 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Parameters_t = "Parameters"
static

Definition at line 47 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Tests_t = "Tests"
static

Definition at line 48 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Data_t = "Data"
static

Definition at line 49 of file JDetectorCalibration.hh.

const std::string JDETECTOR::RunNumber_t = "RUN_NUMBER"
static

Definition at line 50 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Name_t = "Name"
static

Definition at line 51 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Unit_t = "Unit"
static

Definition at line 52 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Values_t = "Values"
static

Definition at line 53 of file JDetectorCalibration.hh.

const std::string JDETECTOR::PMTT0s_t = "PMTT0s"
static

Definition at line 56 of file JDetectorCalibration.hh.

const std::string JDETECTOR::PMTSupplyVoltage_t = "PMT_Supply_Voltage"
static

Definition at line 57 of file JDetectorCalibration.hh.

const std::string JDETECTOR::PMTGain_t = "PMT_Gain"
static

Definition at line 58 of file JDetectorCalibration.hh.

const std::string JDETECTOR::DOMPositions_t = "DOMPositions"
static

Definition at line 59 of file JDetectorCalibration.hh.

const std::string JDETECTOR::DOMRotations_t = "DOMRotations"
static

Definition at line 60 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Test_t = "Test"
static

Definition at line 63 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Target_t = "Target"
static

Definition at line 64 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Outcome_t = "Outcome"
static

Definition at line 65 of file JDetectorCalibration.hh.

const std::string JDETECTOR::UPI_t = "UPI"
static

Definition at line 68 of file JDetectorCalibration.hh.

const std::string JDETECTOR::PBS_t = "PBS"
static

Definition at line 69 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Variant_t = "Variant"
static

Definition at line 70 of file JDetectorCalibration.hh.

const std::string JDETECTOR::PMTSerial_t = "PMTSerial"
static

Definition at line 71 of file JDetectorCalibration.hh.

const std::string JDETECTOR::DOMSerial_t = "DOMSerial"
static

Definition at line 72 of file JDetectorCalibration.hh.

const std::string JDETECTOR::DOMId_t = "DOMId"
static

Definition at line 73 of file JDetectorCalibration.hh.

const std::string JDETECTOR::T0_t = "T0"
static

Definition at line 76 of file JDetectorCalibration.hh.

const std::string JDETECTOR::PX_t = "PX"
static

Definition at line 77 of file JDetectorCalibration.hh.

const std::string JDETECTOR::PY_t = "PY"
static

Definition at line 78 of file JDetectorCalibration.hh.

const std::string JDETECTOR::PZ_t = "PZ"
static

Definition at line 79 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Q0_t = "Q0"
static

Definition at line 80 of file JDetectorCalibration.hh.

const std::string JDETECTOR::QX_t = "QX"
static

Definition at line 81 of file JDetectorCalibration.hh.

const std::string JDETECTOR::QY_t = "QY"
static

Definition at line 82 of file JDetectorCalibration.hh.

const std::string JDETECTOR::QZ_t = "QZ"
static

Definition at line 83 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Unitless_t = "-"
static

Definition at line 86 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Volt_t = "V"
static

Definition at line 87 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Result_t = "Result"
static

Definition at line 90 of file JDetectorCalibration.hh.

const std::string JDETECTOR::OK_t = "OK"
static

Definition at line 91 of file JDetectorCalibration.hh.

const std::string JDETECTOR::Failed_t = "FAILED"
static

Definition at line 92 of file JDetectorCalibration.hh.

const char* const JDETECTOR::GENDET_DETECTOR_FILE_FORMAT = ".det"
static

File name extensions.

file format used by gendet

Definition at line 65 of file JDetectorToolkit.hh.

const char* const JDETECTOR::BINARY_DETECTOR_FILE_FORMAT = ".dat"
static

JIO binary file format.

Definition at line 66 of file JDetectorToolkit.hh.

const char* const JDETECTOR::KM3NET_DETECTOR_FILE_FORMAT = ".detx"
static

KM3NeT standard ASCII format.

Definition at line 67 of file JDetectorToolkit.hh.

const char* const JDETECTOR::ZIPPED_DETECTOR_FILE_FORMAT = ".gz"
static

zipped KM3NeT standard ASCII format

Definition at line 68 of file JDetectorToolkit.hh.

const char* const JDETECTOR::GDML_DETECTOR_FILE_FORMAT = ".gdml"
static

KM3Sim input format.

Definition at line 69 of file JDetectorToolkit.hh.

const char* const JDETECTOR::GDML_SCHEMA = getenv("GDML_SCHEMA_DIR")
static

directory necessary for correct GDML header output

Definition at line 70 of file JDetectorToolkit.hh.

const char* const JDETECTOR::CAN_MARGIN = getenv("CAN_MARGIN")
static

extension of the detector size to comply with the can definition

Definition at line 71 of file JDetectorToolkit.hh.

const char* const JDETECTOR::G4GDML_DEFAULT_SCHEMALOCATION = "http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"
static

Definition at line 72 of file JDetectorToolkit.hh.

JRotation JDETECTOR::getRotation
static

Function object to get rotation matrix to go from first to second module.

Definition at line 810 of file JDetectorToolkit.hh.

const JGetDetectorVersion JDETECTOR::getDetectorVersion
static

Function object to map detector variant to detector version.

Definition at line 236 of file JDetectorVersion.hh.

const JPutDetectorVersion JDETECTOR::putDetectorVersion(getDetectorVersion)
static

Function object to map detector version to detector variant.

const int JDETECTOR::LED_BEACON_PMT_TYPE = 2
static

PMT type of LED beacon.

Definition at line 37 of file JMonteCarloDetector.hh.

const JTransitionTimeGenerator JDETECTOR::getTransitionTime
static

Function object to generate transition time.

Definition at line 1071 of file JPMTTransitTimeGenerator.hh.

const JTransitionTimeProbability JDETECTOR::getTransitionTimeProbability
static

Function object of transition time prabability.

Definition at line 1046 of file JPMTTransitTimeProbability.hh.

const JTransitionTimeProbability2D JDETECTOR::getTransitionTimeProbability2D
static

Function object of twofold transition time prabability.

Definition at line 1096 of file JPMTTransitTimeProbability.hh.

const JGetPMTStatusBit JDETECTOR::getPMTStatusBit
static

Function object to map key to PMT status bit.

Definition at line 292 of file JStatus.hh.

const JPutPMTStatusBit JDETECTOR::putPMTStatusBit(getPMTStatusBit)
static

Function object to map PMT status bit to key.

const JStringCounter JDETECTOR::getNumberOfStrings
static

Function object to count unique strings.

Definition at line 95 of file JStringCounter.hh.