ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CexmcException.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CexmcException.cc
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 /*
27  * ============================================================================
28  *
29  * Filename: CexmcException.cc
30  *
31  * Description: cexmc exceptions
32  *
33  * Version: 1.0
34  * Created: 23.12.2009 13:42:26
35  * Revision: none
36  * Compiler: gcc
37  *
38  * Author: Alexey Radkov (),
39  * Company: PNPI
40  *
41  * ============================================================================
42  */
43 
44 #include "CexmcException.hh"
45 #include "CexmcRunManager.hh"
46 #include "CexmcCommon.hh"
47 
48 
50 {
51 }
52 
53 
55 {
56 }
57 
58 
59 const char * CexmcException::what( void ) const throw()
60 {
61  switch ( type )
62  {
64  return CEXMC_LINE_START "Unspecified system exception.";
66  return CEXMC_LINE_START "Event action was not initialized.";
68  return CEXMC_LINE_START "Exception in command line arguments. "
69  "Check your command line arguments.";
71  return CEXMC_LINE_START "Exception in PreInit phase. "
72  "Probably you did not specify preinit macro or production model "
73  "in it.";
75  return CEXMC_LINE_START "File compress exception. "
76  "Check if the file exists and output directory is writable.";
78  return CEXMC_LINE_START "Read project is incomplete. "
79  "Check if the read project has complete set of data files.";
80  case CexmcProjectExists :
81  return CEXMC_LINE_START "Project you try to write exists. "
82  "Use command line option '-y' to force project override.";
84  return CEXMC_LINE_START "Command is not allowed here. "
85  "Probably you tried to issue a command which would override "
86  "read-only settings in the read project.";
88  return CEXMC_LINE_START "Bad angular range. "
89  "Check specified angular ranges (probably they mismatch ranges "
90  "in the read project).";
91  case CexmcBadThreshold :
92  return CEXMC_LINE_START "Bad threshold. "
93  "Check specified thresholds (probably they mismatch thresholds "
94  "in the read project).";
96  return CEXMC_LINE_START "Bad calorimeter trigger algorithm. "
97  "Check specified calorimeter trigger algorithm (probably it "
98  "mismatches algorithm in the read project).";
100  return CEXMC_LINE_START "Bad outer crystals veto algorithm. "
101  "Check specified outer crystals veto algorithm (probably it "
102  "mismatches algorithm in the read project).";
104  return CEXMC_LINE_START "Bad outer crystals veto fraction. "
105  "Check specified outer crystals veto fraction (probably it "
106  "has higher value than in the read project).";
108  return CEXMC_LINE_START "Calorimeter sensitive region was not "
109  "initialized. Check gdml source file.";
111  return CEXMC_LINE_START "Calorimeter geometry data was not "
112  "initialized. Check gdml source file.";
114  return CEXMC_LINE_START "Multiple detector roles for one logical "
115  "volume. Check gdml source file.";
117  return CEXMC_LINE_START "Kinematics exception. "
118  "Check your production model.";
119  case CexmcPoorEventData :
120  return CEXMC_LINE_START "Cannot create rich event data from poor "
121  "original data. Set less value of event data verbose level.";
123  return CEXMC_LINE_START "Incompatible geometry definition. "
124  "Check your geometry data.";
126  return CEXMC_LINE_START "Production model provided is incomplete. "
127  "Check that your production model defines all particles.";
129  return CEXMC_LINE_START "Production model provided is incompatible "
130  "with physical process that tries to bind it.";
132  return CEXMC_LINE_START "Beam and incident particles mismatch. "
133  "Instantiated reconstructor will not give reliable results in "
134  "this case. Make sure that beam particle and incident particle "
135  "of provided production model are same.";
137  return CEXMC_LINE_START "An angular range is not valid. "
138  "Check specified angular ranges.";
139 #ifdef CEXMC_USE_CUSTOM_FILTER
140  case CexmcCFBadSource :
141  return CEXMC_LINE_START "Custom filter source file does not exist or "
142  "damaged. Check your command line arguments or source file.";
143  case CexmcCFParseError :
144  return CEXMC_LINE_START "Custom filter source file contains errors. "
145  "Check your custom filter source file.";
146  case CexmcCFUninitialized :
147  return CEXMC_LINE_START "Custom filter was not properly initialized.";
148  case CexmcCFUninitializedVector :
149  return CEXMC_LINE_START "Custom filter: A vector variable was not "
150  "initialized.";
151  case CexmcCFUnexpectedContext :
152  return CEXMC_LINE_START "Custom filter: a variable or function call is "
153  "in wrong type context (scalar when a vector is expected or "
154  "vice versa). Check your custom filter script.";
155  case CexmcCFUnexpectedFunction :
156  return CEXMC_LINE_START "Custom filter: a function is unknown or in "
157  "wrong type context. Check your custom filter script.";
158  case CexmcCFUnexpectedVariable :
159  return CEXMC_LINE_START "Custom filter: a variable is unknown or in "
160  "wrong type context. Check your custom filter script.";
161  case CexmcCFUnexpectedVariableUsage :
162  return CEXMC_LINE_START "Custom filter: a variable is used in wrong "
163  "type context (scalar when a vector is expected or vice "
164  "versa). Check your custom filter script.";
165  case CexmcCFUnexpectedVectorIndex :
166  return CEXMC_LINE_START "Custom filter: a vector variable with wrong "
167  "index. Indices of vectors should start from 1. Check your "
168  "custom filter script.";
169 #endif
170  case CexmcWeirdException :
171  return CEXMC_LINE_START "A weird exception occurred. "
172  "The world must collapse now.";
173  default :
174  return CEXMC_LINE_START "Unknown exception.";
175  }
176 }
177 
178 
180  G4bool extraCond )
181 {
182  CexmcRunManager * runManager( static_cast< CexmcRunManager * >(
184  if ( runManager->ProjectIsRead() && extraCond )
185  throw CexmcException( type );
186 }
187