Set Getters to be const and general fixed up and added some extra setters
authornilsen <nilsen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 7 Oct 2003 13:57:03 +0000 (13:57 +0000)
committernilsen <nilsen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 7 Oct 2003 13:57:03 +0000 (13:57 +0000)
and getters.

ITS/AliITSresponse.cxx
ITS/AliITSresponse.h
ITS/AliITSsimulation.cxx
ITS/AliITSsimulation.h

index 923fd21..ec6bac8 100644 (file)
@@ -1,7 +1,24 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/* $Id$ */
+
 ////////////////////////////////////////////////
 //  Response class for set:ITS                //
 ////////////////////////////////////////////////
-
+#include <Riostream.h>
 #include <TMath.h>
 #include <TF1.h>
 #include <TString.h>
@@ -16,6 +33,7 @@ AliITSresponse::AliITSresponse(){
     fdv = 0.000375;  // 300 microns and 80 volts.
     fN  = 0.0;
     fT  = 300.0;
+    SetGeVToCharge();
 }
 //______________________________________________________________________
 AliITSresponse::AliITSresponse(Double_t thickness){
@@ -24,9 +42,10 @@ AliITSresponse::AliITSresponse(Double_t thickness){
     fdv = thickness/80.0;   // 80 volts.
     fN  = 0.0;
     fT  = 300.0;
+    SetGeVToCharge();
 }
 //______________________________________________________________________
-Double_t AliITSresponse::MobilityElectronSiEmp(){
+Double_t AliITSresponse::MobilityElectronSiEmp() const {
     // Computes the electron mobility in cm^2/volt-sec. Taken from SILVACO
     // International ATLAS II, 2D Device Simulation Framework, User Manual 
     // Chapter 5 Equation 5-6. An empirical function for low-field mobiliity 
@@ -59,7 +78,7 @@ Double_t AliITSresponse::MobilityElectronSiEmp(){
     return m;
 }
 //______________________________________________________________________
-Double_t AliITSresponse::MobilityHoleSiEmp(){
+Double_t AliITSresponse::MobilityHoleSiEmp() const {
     // Computes the Hole mobility in cm^2/volt-sec. Taken from SILVACO
     // International ATLAS II, 2D Device Simulation Framework, User Manual 
     // Chapter 5 Equation 5-7 An empirical function for low-field mobiliity 
@@ -93,7 +112,7 @@ Double_t AliITSresponse::MobilityHoleSiEmp(){
     return m;
 }
 //______________________________________________________________________
-Double_t AliITSresponse::DiffusionCoefficientElectron(){
+Double_t AliITSresponse::DiffusionCoefficientElectron() const {
     // Computes the Diffusion coefficient for electrons in cm^2/sec. Taken 
     // from SILVACO International ATLAS II, 2D Device Simulation Framework, 
     // User Manual Chapter 5 Equation 5-53. Einstein relations for diffusion 
@@ -114,7 +133,7 @@ Double_t AliITSresponse::DiffusionCoefficientElectron(){
     return m*kbqe*T;  // [cm^2/sec]
 }
 //______________________________________________________________________
-Double_t AliITSresponse::DiffusionCoefficientHole(){
+Double_t AliITSresponse::DiffusionCoefficientHole() const {
     // Computes the Diffusion coefficient for Holes in cm^2/sec. Taken 
     // from SILVACO International ATLAS II, 2D Device Simulation Framework, 
     // User Manual Chapter 5 Equation 5-53. Einstein relations for diffusion 
@@ -136,7 +155,7 @@ Double_t AliITSresponse::DiffusionCoefficientHole(){
     return m*kbqe*T;  // [cm^2/sec]
 }
 //______________________________________________________________________
-Double_t AliITSresponse::SpeedElectron(){
+Double_t AliITSresponse::SpeedElectron() const {
     // Computes the average speed for electrons in Si under the low-field 
     // approximation. [cm/sec].
     // Inputs:
@@ -151,7 +170,7 @@ Double_t AliITSresponse::SpeedElectron(){
     return m/fdv;  // [cm/sec]
 }
 //______________________________________________________________________
-Double_t AliITSresponse::SpeedHole(){
+Double_t AliITSresponse::SpeedHole() const {
     // Computes the average speed for Holes in Si under the low-field 
     // approximation.[cm/sec].
     // Inputs:
@@ -166,14 +185,14 @@ Double_t AliITSresponse::SpeedHole(){
     return m/fdv;  // [cm/sec]
 }
 //______________________________________________________________________
-Double_t AliITSresponse::SigmaDiffusion3D(Double_t l){
-    // Returns the Gaussian sigma^2 == <x^2+y^2+z^2> [cm^2] due to the defusion 
-    // of electrons or holes through a distance l [cm] caused by an applied
-    // voltage v [volt] through a distance d [cm] in any material at a
-    // temperature T [degree K]. The sigma diffusion when expressed in terms
-    // of the distance over which the diffusion occures, l=time/speed, is 
-    // independent of the mobility and therefore the properties of the
-    // material. The charge distributions is given by 
+Double_t AliITSresponse::SigmaDiffusion3D(Double_t l) const {
+    // Returns the Gaussian sigma^2 == <x^2+y^2+z^2> [cm^2] due to the
+    // defusion of electrons or holes through a distance l [cm] caused 
+    // by an applied voltage v [volt] through a distance d [cm] in any
+    //  material at a temperature T [degree K]. The sigma diffusion when
+    //  expressed in terms of the distance over which the diffusion 
+    // occures, l=time/speed, is independent of the mobility and therefore
+    //  the properties of the material. The charge distributions is given by 
     // n = exp(-r^2/4Dt)/(4piDt)^1.5. From this <r^2> = 6Dt where D=mkT/e
     // (m==mobility, k==Boltzman's constant, T==temparature, e==electric 
     // charge. and vel=m*v/d. consiquently sigma^2=6kTdl/ev.
@@ -188,7 +207,7 @@ Double_t AliITSresponse::SigmaDiffusion3D(Double_t l){
     return TMath::Sqrt(con*fT*fdv*l);  // [cm]
 }
 //______________________________________________________________________
-Double_t AliITSresponse::SigmaDiffusion2D(Double_t l){
+Double_t AliITSresponse::SigmaDiffusion2D(Double_t l) const {
     // Returns the Gaussian sigma^2 == <x^2+z^2> [cm^2] due to the defusion 
     // of electrons or holes through a distance l [cm] caused by an applied
     // voltage v [volt] through a distance d [cm] in any material at a
@@ -210,7 +229,7 @@ Double_t AliITSresponse::SigmaDiffusion2D(Double_t l){
     return TMath::Sqrt(con*fT*fdv*l);  // [cm]
 }
 //______________________________________________________________________
-Double_t AliITSresponse::SigmaDiffusion1D(Double_t l){
+Double_t AliITSresponse::SigmaDiffusion1D(Double_t l) const {
     // Returns the Gaussian sigma^2 == <x^2> [cm^2] due to the defusion 
     // of electrons or holes through a distance l [cm] caused by an applied
     // voltage v [volt] through a distance d [cm] in any material at a
@@ -231,3 +250,73 @@ Double_t AliITSresponse::SigmaDiffusion1D(Double_t l){
 
     return TMath::Sqrt(con*fT*fdv*l);  // [cm]
 }
+//----------------------------------------------------------------------
+void AliITSresponse::Print(ostream *os){
+  // Standard output format for this class.
+  // Inputs:
+  //    ostream *os  Pointer to the output stream
+  // Outputs:
+  //    none:
+  // Return:
+  //    none.
+#if defined __GNUC__
+#if __GNUC__ > 2
+    ios::fmtflags fmt;
+#else
+    Int_t fmt;
+#endif
+#else
+#if defined __ICC || defined __ECC
+    ios::fmtflags fmt;
+#else
+    Int_t fmt;
+#endif
+#endif
+
+    fmt = os->setf(ios::scientific);  // set scientific floating point output
+    *os << fdv << " " << fN << " " << fT << " ";
+    *os << fGeVcharge;
+//    *os << " " << endl;
+    os->flags(fmt); // reset back to old formating.
+    return;
+}
+//----------------------------------------------------------------------
+void AliITSresponse::Read(istream *is){
+  // Standard input format for this class.
+  // Inputs:
+  //    ostream *os  Pointer to the output stream
+  // Outputs:
+  //    none:
+  // Return:
+  //    none.
+
+    *is >> fdv >> fN >> fT >> fGeVcharge;
+    return;
+}
+//----------------------------------------------------------------------
+ostream &operator<<(ostream &os,AliITSresponse &p){
+  // Standard output streaming function.
+  // Inputs:
+  //    ostream *os  Pointer to the output stream
+  // Outputs:
+  //    none:
+  // Return:
+  //    none.
+
+    p.Print(&os);
+    return os;
+}
+//----------------------------------------------------------------------
+istream &operator>>(istream &is,AliITSresponse &r){
+  // Standard input streaming function.
+  // Inputs:
+  //    ostream *os  Pointer to the output stream
+  // Outputs:
+  //    none:
+  // Return:
+  //    none.
+
+    r.Read(&is);
+    return is;
+}
+//----------------------------------------------------------------------
index d8298da..da77e1e 100644 (file)
@@ -1,5 +1,9 @@
 #ifndef ALIITSRESPONSE_H
 #define ALIITSRESPONSE_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
 
 #include <TObject.h>
 
@@ -28,22 +32,29 @@ class AliITSresponse : public TObject {
     // Set Electronics
     virtual void    SetElectronics(Int_t) {}
     // Get Electronics
-    virtual Int_t Electronics()  {return 0;}
+    virtual Int_t Electronics() const {return 0;}
 
     // Set maximum Adc-count value
     virtual void    SetMaxAdc(Float_t) {}
     // Get maximum Adc-count value
-    virtual Float_t MaxAdc()  {return 0.;}
+    virtual Float_t MaxAdc() const {return 0.;}
 
     // Set maximum Adc-top value
     virtual void    SetDynamicRange(Float_t) {}
     // Get maximum Adc-top value
-    virtual Float_t DynamicRange()  {return 0.0;}
+    virtual Float_t DynamicRange() const {return 0.0;}
 
     // Set Charge Loss Linear Coefficient
     virtual void    SetChargeLoss(Float_t) {}
     // Get Charge Loss Linear Coefficient
-    virtual Float_t ChargeLoss()  {return 0.0;}
+    virtual Float_t ChargeLoss() const {return 0.0;}
+
+    // Set GeVcharge value
+    virtual void SetGeVToCharge(Float_t gc=2.778E+8){fGeVcharge = gc;}
+    // Returns the value fGeVcharge
+    virtual Float_t GetGeVToCharge() const {return fGeVcharge;}
+    // Converts deposited energy to number of electrons liberated
+    virtual Float_t GeVToCharge(Float_t gev) const {return gev*fGeVcharge;}
 
     // Diffusion coefficient
     virtual void    SetDiffCoeff(Float_t, Float_t) {}
@@ -53,20 +64,20 @@ class AliITSresponse : public TObject {
     // Temperature in [degree K]
     virtual void    SetTemperature(Float_t t=300.0) {fT = t;}
     // Get temperature [degree K]
-    virtual Float_t Temperature() {return fT;}
+    virtual Float_t Temperature() const {return fT;}
     // Type of data - real or simulated
     virtual void    SetDataType(const char *) {}
     // Set the impurity concentrations in [#/cm^3]
     virtual void SetImpurity(Double_t n=0.0){fN = n;}
     // Returns the impurity consentration in [#/cm^3]
-    virtual Double_t Impurity(){return fN;}
+    virtual Double_t Impurity() const {return fN;}
     // Sets the applied ratio distance/voltage [cm/volt]
     virtual void SetDistanceOverVoltage(Double_t d,Double_t v){fdv = d/v;}
     // Sets the applied ration distance/voltage [cm/volt]. Default value
     // is 300E-4cm/80 volts = 0.000375 cm/volts
     virtual void SetDistanceOverVoltage(Double_t dv=0.000375){fdv = dv;}
     // Returns the ration distance/voltage
-    virtual Double_t DistanceOverVoltage(){return fdv;}
+    virtual Double_t DistanceOverVoltage() const {return fdv;}
     // Get data type
     virtual const char  *DataType() const {return "";}
  
@@ -81,7 +92,7 @@ class AliITSresponse : public TObject {
 
     // Parameters options
     virtual void   ParamOptions(char *,char*) {}
-    virtual Int_t  NDetParam() {return 0;}
+    virtual Int_t  NDetParam() const {return 0;}
     virtual void   GetDetParam(Float_t *) {}
     virtual void   GetNoiseParam(Float_t&, Float_t&) {}
 
@@ -94,16 +105,16 @@ class AliITSresponse : public TObject {
     virtual void   Thresholds(Float_t &, Float_t &) {}
     // Set min val
     virtual void   SetMinVal(Int_t) {};
-    virtual Int_t  MinVal() {return 0;};
+    virtual Int_t  MinVal() const {return 0;};
 
     // Set filenames
     virtual void SetFilenames(const char *,const char *,const char *) {}
     // Filenames
     virtual void   Filenames(char*,char*,char*) {}
 
-    virtual Float_t DriftSpeed() {return 0.;}
-    virtual Bool_t  OutputOption() {return kFALSE;}
-    virtual Bool_t  Do10to8() {return kTRUE;}
+    virtual Float_t DriftSpeed() const {return 0.;}
+    virtual Bool_t  OutputOption() const {return kFALSE;}
+    virtual Bool_t  Do10to8() const {return kTRUE;}
     virtual void    GiveCompressParam(Int_t *) {}
 
     //
@@ -111,61 +122,69 @@ class AliITSresponse : public TObject {
     // Set number of sigmas over which cluster disintegration is performed
     virtual void    SetNSigmaIntegration(Float_t) {}
     // Get number of sigmas over which cluster disintegration is performed
-    virtual Float_t NSigmaIntegration() {return 0.;}
+    virtual Float_t NSigmaIntegration() const {return 0.;}
     // Set number of bins for the gaussian lookup table
     virtual void    SetNLookUp(Int_t) {}
     // Get number of bins for the gaussian lookup table
-    virtual Int_t GausNLookUp() {return 0;}
+    virtual Int_t GausNLookUp() const {return 0;}
     // Get scaling factor for bin i-th from the gaussian lookup table
-    virtual Float_t GausLookUp(Int_t) {return 0.;}
+    virtual Float_t GausLookUp(Int_t) const {return 0.;}
     // Set sigmas of the charge spread function
     virtual void    SetSigmaSpread(Float_t, Float_t) {}
     // Get sigmas for the charge spread
     virtual void    SigmaSpread(Float_t &,Float_t &) {}
 
     // Pulse height from scored quantity (eloss)
-    virtual Float_t IntPH(Float_t) {return 0.;}
+    virtual Float_t IntPH(Float_t) const {return 0.;}
     // Charge disintegration
-    virtual Float_t IntXZ(AliITSsegmentation *) {return 0.;}
+    virtual Float_t IntXZ(AliITSsegmentation *) const {return 0.;}
     // Electron mobility in Si. [cm^2/(Volt Sec)]. T in degree K, N in #/cm^3
-    virtual Double_t MobilityElectronSiEmp();
+    virtual Double_t MobilityElectronSiEmp() const ;
     // Hole mobility in Si. [cm^2/(Volt Sec)]  T in degree K, N in #/cm^3
-    virtual Double_t MobilityHoleSiEmp();
+    virtual Double_t MobilityHoleSiEmp() const ;
     // Einstein relation for Diffusion Coefficient of Electrons. [cm^2/sec]
     //  T in degree K, N in #/cm^3
-    virtual Double_t DiffusionCoefficientElectron();
+    virtual Double_t DiffusionCoefficientElectron() const ;
     // Einstein relation for Diffusion Coefficient of Holes. [cm^2/sec]
     //  T in [degree K], N in [#/cm^3]
-    virtual Double_t DiffusionCoefficientHole();
+    virtual Double_t DiffusionCoefficientHole() const ;
     // Electron <speed> under an applied electric field E=Volts/cm. [cm/sec]
     // d distance-thickness in [cm], v in [volts], T in [degree K],
     // N in [#/cm^3]
-    virtual Double_t SpeedElectron();
+    virtual Double_t SpeedElectron() const ;
     // Holes <speed> under an applied electric field E=Volts/cm. [cm/sec]
     // d distance-thickness in [cm], v in [volts], T in [degree K],
     // N in [#/cm^3]
-    virtual Double_t SpeedHole();
+    virtual Double_t SpeedHole() const ;
     // Returns the Gaussian sigma == <x^2+z^2> [cm^2] due to the defusion of
     // electrons or holes through a distance l [cm] caused by an applied
     // voltage v [volt] through a distance d [cm] in any material at a
     // temperature T [degree K].
-    virtual Double_t SigmaDiffusion3D(Double_t);
+    virtual Double_t SigmaDiffusion3D(Double_t) const ;
     // Returns the Gaussian sigma == <x^2 +y^2+z^2> [cm^2] due to the
     // defusion of electrons or holes through a distance l [cm] caused by an
     // applied voltage v [volt] through a distance d [cm] in any material at a
     // temperature T [degree K].
-    virtual Double_t SigmaDiffusion2D(Double_t);
+    virtual Double_t SigmaDiffusion2D(Double_t) const ;
     // Returns the Gaussian sigma == <x^2+z^2> [cm^2] due to the defusion of
     // electrons or holes through a distance l [cm] caused by an applied
     // voltage v [volt] through a distance d [cm] in any material at a
     // temperature T [degree K].
-    virtual Double_t SigmaDiffusion1D(Double_t);
+    virtual Double_t SigmaDiffusion1D(Double_t) const ;
+    // Prints out the content of this class in ASCII format.
+    virtual void Print(ostream *os);
+    // Reads in the content of this class in the format of Print
+    virtual void Read(istream *is);
  private:
     Double_t fdv;  // The parameter d/v where d is the disance over which the
                    // the potential v is applied d/v [cm/volts]
     Double_t fN;   // the impurity consentration of the material in #/cm^3
     Double_t fT;   // The temperature of the Si in Degree K.
+    Double_t fGeVcharge; // Energy to ionize (free an electron).
 
     ClassDef(AliITSresponse,2) // Detector type response virtual base class 
 };
+// Input and output function for standard C++ input/output.
+ostream& operator<<(ostream &os,AliITSresponse &source);
+istream& operator>>(istream &os,AliITSresponse &source);
 #endif
index 167dadd..576abdb 100644 (file)
@@ -25,6 +25,8 @@ AliITSsimulation::AliITSsimulation(){
     fSegmentation = 0;
     fResponse     = 0;
     fpList        = 0;
+    fModule       = 0;
+    fEvent        = 0;
 }
 //__________________________________________________________________________
 AliITSsimulation::~AliITSsimulation(){
@@ -34,29 +36,23 @@ AliITSsimulation::~AliITSsimulation(){
     delete fpList;
 }
 //__________________________________________________________________________
-AliITSsimulation::AliITSsimulation(const AliITSsimulation &source) : 
-    TObject(source){
+AliITSsimulation::AliITSsimulation(const AliITSsimulation &s) : TObject(s){
     //     Copy Constructor 
  
-    if(&source == this) return;
-    this->fResponse     = source.fResponse;
-    this->fSegmentation = source.fSegmentation;
-    this->fModule       = source.fModule;
-    this->fEvent        = source.fEvent;
-    this->fpList        = source.fpList;
+    *this = s;
     return;
 }
 
 //_________________________________________________________________________
-AliITSsimulation&  AliITSsimulation::operator=(const AliITSsimulation &source){
+AliITSsimulation&  AliITSsimulation::operator=(const AliITSsimulation &s){
     //    Assignment operator
 
-    if(&source == this) return *this;
-    this->fResponse     = source.fResponse; 
-    this->fSegmentation = source.fSegmentation;
-    this->fModule       = source.fModule;
-    this->fEvent        = source.fEvent;
-    this->fpList        = source.fpList;
+    if(&s == this) return *this;
+    this->fResponse     = s.fResponse; 
+    this->fSegmentation = s.fSegmentation;
+    this->fModule       = s.fModule;
+    this->fEvent        = s.fEvent;
+    this->fpList        = s.fpList;
     return *this;
 }
 //______________________________________________________________________
index cc1c3d2..1bcda08 100644 (file)
 /* $Id$ */
 
 #include <TObject.h>
+#include "AliITSpList.h"
 
 class AliITSresponse;
 class AliITSsegmentation;
 class AliITSmodule;
 class TRandom;
-class AliITSpList;
 class TClonesArray;
 
 // This is the base class for ITS detector signal simulations. Data members
@@ -70,7 +70,14 @@ class AliITSsimulation : public TObject {
     virtual AliITSsegmentation* GetSegmentationModel(){return fSegmentation;}
     // set pointer to Response model
     virtual void SetSegmentationModel(AliITSsegmentation *seg){
-       fSegmentation = seg;}
+                                                        fSegmentation = seg;}
+    virtual AliITSpList* GetMap(){return fpList;} // Returns fpList, the map.
+    virtual void SetMap(AliITSpList *p){fpList = p;} // Sets fpList, the map.
+    virtual void ClearMap(){fpList->ClearMap();} // Clear fpList, map.
+    virtual void SetModuleNumber(Int_t mod){fModule=mod;} // Set Module number
+    virtual Int_t GetModuleNumber(){return fModule;}// Gets Module number
+    virtual void SetEventNumber(Int_t evnt){fEvent=evnt;} // Set Event number
+    virtual Int_t GetEventNumber(){return fEvent;}// Gets Event number
 
  protected:
     AliITSresponse      *fResponse;       //! response