]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TGeant4/TG4G3Defaults.cxx
Enable creation of fast rec points for ITS, when input argument for ITS = 2.
[u/mrichter/AliRoot.git] / TGeant4 / TG4G3Defaults.cxx
index 9d461371d77bd64b5cec255bacd1cf3d6c6a0dec..04f014b2185515305717a7bf936229bdeb1af64b 100644 (file)
@@ -1,6 +1,10 @@
 // $Id$
 // Category: global
 //
+// Author: I. Hrivnacova
+//
+// Class TG4G3Defaults
+// -------------------
 // See the class description in the header file.
 
 #include "TG4G3Defaults.h"
 
 #include <math.h>
 
-// static const data members
-
-// precision tolerance
-const G4double TG4G3Defaults::fgkCutTolerance = 1. * keV;
-
-// kinetic energy cuts
-const G4double TG4G3Defaults::fgkCUTGAM = 0.001 * GeV;
-const G4double TG4G3Defaults::fgkCUTELE = 0.001 * GeV;
-const G4double TG4G3Defaults::fgkCUTNEU = 0.01 * GeV;
-const G4double TG4G3Defaults::fgkCUTHAD = 0.01 * GeV;
-const G4double TG4G3Defaults::fgkCUTMUO = 0.01 * GeV;
-const G4double TG4G3Defaults::fgkBCUTE  = fgkCUTGAM;
-const G4double TG4G3Defaults::fgkBCUTM  = fgkCUTGAM;
-const G4double TG4G3Defaults::fgkDCUTE  = 10. * TeV;
-const G4double TG4G3Defaults::fgkDCUTM  = 10. * TeV;
-const G4double TG4G3Defaults::fgkPPCUTM = 0.01 * GeV;
-
-// physics processes
-const TG4G3ControlValue TG4G3Defaults::fgkPAIR = kActivate;   // 1
-const TG4G3ControlValue TG4G3Defaults::fgkCOMP = kActivate;   // 1
-const TG4G3ControlValue TG4G3Defaults::fgkPHOT = kActivate;   // 1
-const TG4G3ControlValue TG4G3Defaults::fgkPFIS = kInActivate; // 0
-const TG4G3ControlValue TG4G3Defaults::fgkDRAY = kActivate2;  // 2
-const TG4G3ControlValue TG4G3Defaults::fgkANNI = kActivate;   // 1
-const TG4G3ControlValue TG4G3Defaults::fgkBREM = kActivate;   // 1
-const TG4G3ControlValue TG4G3Defaults::fgkHADR = kActivate;   // 1
-const TG4G3ControlValue TG4G3Defaults::fgkMUNU = kInActivate; // 0
-const TG4G3ControlValue TG4G3Defaults::fgkDCAY = kActivate;   // 1
-const TG4G3ControlValue TG4G3Defaults::fgkLOSS = kActivate2;  // 2
-const TG4G3ControlValue TG4G3Defaults::fgkMULS = kActivate;   // 1
+// static data members
+
+TG4G3Defaults* TG4G3Defaults::fgInstance = 0;
 
 //_____________________________________________________________________________
 TG4G3Defaults::TG4G3Defaults() {
 //
+  if (fgInstance) {
+    TG4Globals::Exception(
+      "TG4G3Defaults: attempt to create two instances of singleton.");
+  }
+      
+  fgInstance = this;  
+
+  // fill cut vector with default values
+
+  fCutVector.SetCut(kCUTGAM, 0.001 * GeV);
+  fCutVector.SetCut(kCUTELE, 0.001 * GeV);
+  fCutVector.SetCut(kCUTNEU, 0.01 * GeV);
+  fCutVector.SetCut(kCUTHAD, 0.01 * GeV);
+  fCutVector.SetCut(kCUTMUO, 0.01 * GeV);
+  fCutVector.SetCut(kBCUTE, fCutVector[kCUTGAM]);
+  fCutVector.SetCut(kBCUTM, fCutVector[kCUTGAM]);
+  fCutVector.SetCut(kDCUTE,  10. * TeV);
+  fCutVector.SetCut(kDCUTM,  10. * TeV);
+  fCutVector.SetCut(kPPCUTM, 0.01 * GeV);
+
+  // fill control vector with default values
+  fControlVector.SetControl(kPAIR, kActivate, fCutVector);   // 1
+  fControlVector.SetControl(kCOMP, kActivate, fCutVector);   // 1
+  fControlVector.SetControl(kPHOT, kActivate, fCutVector);   // 1
+  fControlVector.SetControl(kPFIS, kInActivate, fCutVector); // 0
+  fControlVector.SetControl(kDRAY, kInActivate, fCutVector); // 0
+  fControlVector.SetControl(kANNI, kActivate, fCutVector);   // 1
+  fControlVector.SetControl(kBREM, kActivate, fCutVector);   // 1
+  fControlVector.SetControl(kHADR, kActivate, fCutVector);   // 1
+  fControlVector.SetControl(kMUNU, kInActivate, fCutVector); // 0
+  fControlVector.SetControl(kDCAY, kActivate, fCutVector);   // 1
+  fControlVector.SetControl(kLOSS, kActivate2, fCutVector);  // 2
+  fControlVector.SetControl(kMULS, kActivate, fCutVector);   // 1
+  fControlVector.SetControl(kCKOV, kInActivate, fCutVector); // 0
+  fControlVector.SetControl(kRAYL, kInActivate, fCutVector); // 0
+  fControlVector.SetControl(kLABS, kInActivate, fCutVector); // 0
+  fControlVector.SetControl(kSYNC, kInActivate, fCutVector); // 0
 }
   
+//_____________________________________________________________________________
+TG4G3Defaults::TG4G3Defaults(const TG4G3Defaults& right) {
+// 
+  TG4Globals::Exception(
+    "Attempt to copy TG4G3Defaults singleton.");
+}
+
 //_____________________________________________________________________________
 TG4G3Defaults::~TG4G3Defaults() {
 //
 }
 
+// operators
+
 //_____________________________________________________________________________
-G4double TG4G3Defaults::CutValue(G4int g3Cut)
+TG4G3Defaults& 
+TG4G3Defaults::operator=(const TG4G3Defaults& right)
+{
+  // check assignement to self
+  if (this == &right) return *this;
+
+  TG4Globals::Exception(
+    "Attempt to assign TG4G3Defaults singleton.");
+    
+  return *this;  
+}    
+          
+//_____________________________________________________________________________
+G4double TG4G3Defaults::CutValue(G4int g3Cut) const
 {
 // Returns the G3 default value for the specified cut.
 // ---
 
-  switch (g3Cut) {
-    case kCUTGAM:  
-      return fgkCUTGAM;
-    case kCUTELE:  
-      return fgkCUTELE;
-    case kCUTNEU:  
-      return fgkCUTNEU;
-    case kCUTHAD:  
-      return fgkCUTHAD;
-    case kCUTMUO:  
-      return fgkCUTMUO;
-    case kBCUTE:   
-      return fgkBCUTE; 
-    case kBCUTM:   
-      return fgkBCUTM; 
-    case kDCUTE:   
-      return fgkDCUTE; 
-    case kDCUTM:   
-      return fgkDCUTM; 
-    case kPPCUTM:  
-      return fgkPPCUTM;
-    default:
-      TG4Globals::Warning("TG4G3Defaults::CutValue: Inconsistent cut.");
-      return 0.;      
-  }
+  return fCutVector[g3Cut];
 }          
 
 //_____________________________________________________________________________
-TG4G3ControlValue TG4G3Defaults::ControlValue(G4int control)
+TG4G3ControlValue TG4G3Defaults::ControlValue(G4int control) const
 {
 // Returns the G3 default value for the specified control.
 // ---
 
-  switch (control) {
-    case kPAIR:
-      return fgkPAIR;
-    case kCOMP:
-      return fgkCOMP;
-    case kPHOT:
-      return fgkPHOT;
-    case kPFIS:
-      return fgkPFIS;
-    case kDRAY:
-      return fgkDRAY;
-    case kANNI:
-      return fgkANNI;
-    case kBREM:
-      return fgkBREM;
-    case kHADR:
-      return fgkHADR;
-    case kMUNU:
-      return fgkMUNU;
-    case kDCAY:
-      return fgkDCAY;
-    case kLOSS:
-      return fgkLOSS;
-    case kMULS:
-      return fgkMULS;
-    default:
-      TG4Globals::Warning(
-        "TG4G3Defaults::ControlValue: Inconsistent control.");
-      return kUnset;      
-  }
+  return fControlVector[control];
 }          
 
 //_____________________________________________________________________________
-G4bool TG4G3Defaults::IsDefaultCut(TG4G3Cut cut, G4double value)
+G4bool TG4G3Defaults::IsDefaultCut(TG4G3Cut cut, G4double value) const
 {
 // Tests if the parameter value is equal to the G3 default value.
 // ---
 
-  if (abs(value*GeV - CutValue(cut)) > fgkCutTolerance
+  if (abs(value*GeV - CutValue(cut)) > TG4G3CutVector::Tolerance()
     return false;
   else  
     return true;
@@ -134,7 +117,7 @@ G4bool TG4G3Defaults::IsDefaultCut(TG4G3Cut cut, G4double value)
 
 //_____________________________________________________________________________
 G4bool TG4G3Defaults::IsDefaultControl(TG4G3Control control,
-                                              G4double value)
+                                       TG4G3ControlValue value) const
 {
 // Tests if the parameter value is equal to the G3 default value.
 // ---