class HMdcDigitizer: public HReconstructor

_HADES_CLASS_DESCRIPTION


  HMdcDigitizer digitizes data and puts output values into
  CAL1 category for simulated data
  OPTIONS:

  -----------------------                                ------------
  |     HMdcUnpacker     |                               | HGeantMdc |
  |   (embedding mode)   | \                             ------------
  |                      |  \                                 ||
  -----------------------    \                                || input to digitizer
                              \                               \
                          --------------    read real    ------------------
                          | HMdcCal1Sim | ------------>  |  HMdcDigitizer  |
                          --------------   <-----------  |                 |
                                            write output |                 |


  HMdcDigitizer("","",option,flag)

  option=1   : TDC mode for two measured leading edges of two signals
  option=2   : TDC mode for  measured leading and trailing edge of one signal
  flag=kTRUE : NTuple with internal variables of the digitizer will be filled and written
               to the outputfile digitizer.root inside the working directory
  flag=kFALSE: No NTuple is filled

  setNTuple(kFALSE) no nTuple with internal data is filled and written out
           (kTRUE ) a NTuple with internal data is filled and written to digitizer.root
  setTdcMode(1) TDC mode for two measured leading edges of two signals
            (2) TDC mode for  measured leading and trailing edge of one signal
  setOffsets(1.5,2.5,4.5,5.5, 0 or 1)sets offsets for each type of module which will be
                                     substracted from the calculated time1 and time2, the
                                     last flag switches the use of offsets on/off (1=on(default)).
  setEffLevel(90.,90.,90.,90., 0 or 1) sets level of cell efficiency cut for each type of module, the
                                       last flag switches the use of efficiency on/off (1=on(default)).
  setOffsets(1.5,2.5,4.5,5.5, 0 or 1)  offsets (ns), which will be substracted from drif time + tof
  setTofUse(kFALSE) time of flight will not be added to drift times
           (kTRUE ) time of flight will be added to drift time
  setErrorUse(kTRUE)  apply smearing of drift times with errors
             (kFALSE) do not apply smearing of drift times with errors
  setWireStatUse(kTRUE)  take into account dead wires and efficiency of single wires
                (kFALSE) assume all wires working (default)
  setTimeCutUse(kTRUE)  take into account time cuts
               (kFALSE) (default)
  setDeDxUse(kTRUE)  calculate t2-t1 from energy loss of the particle (default)
            (kFALSE) calculate t2-t1 from GARFIELD tables
  setNoiseLevel(5.,5.,5.,5.) sets level of noise for each type of module
  setNoiseRange(low1,low2,low3,low4,hi1,hi2,hi3,hi4) sets the time window of the noise
                                                     for each module type
  setNoiseBandWidth(width)       (time-above threshold bump 0-width ns)
  setNoiseWhiteWidth(upperrange) (upper range in time-above threshold for white noise outside the bump)
  setNoiseWhiteRatio(ratio);     (ratio between bump/white noise
  setNoiseMode(1)(default)GEANT cells will be overwritten by noise (if timenoise<time)
              (2)         GEANT cells will not be touched
  setEmbeddingMode(Int_t) (default)1=realistic merging og REAL and GEANT data (default)
                                   2=keep Geant data
  setSignalSpeed(0.004) sets the speed of the signal on the wire used to calulate the time offset
                        by the signal propagation on the wire (ns/mm)

 SHORT INTRODUCTION to HMdcDigitizer:

 SCHEME OF DIGITAZATION:
 1. Reading input from HGeantMdc
 2. Evaluation of fired cells
 3. Calulation of drift times / wire offsets
 4. Storing in HMdcGeantCell category (not persistent)
 5. Filling arrays of all hits for one cell from HMdcGeantCell
 6. set efficiency flags to the hits (cell efficiency/layer efficiency/dead wires/efficiency wires)
 7. Filling real data into arrays if digitizer runs in embedding mode
 8. sorting arrays with increasing arrival time of the signal (drift + error + tof + wireoffset)
 9. selecting 1. and 2. valid hit in cell
 10.filling output to HMdcCal1Sim
 11.generation of noise

 INPUT DATA TO THE DIGITIZER:
 The Digitizer retrieves the GEANT data from
 HGeantMdc (sector,module,layer, hit: xcoord,ycoord,tof,ptot, incidence:theta,phi,tracknumber).
 Evaluation of fired cells:
 HMdcDigitizer::transform(Float_t xcoord, Float_t ycoord, Float_t theta,
                          Float_t phi   , Float_t tof   , Int_t trkNum) calculates
 which cells have been hit by the track. The Information about the layer geometry
 (pitch, cathod distance, wire orientation, number of wires per layer and number of central wire)
 is taken from HMdcLayerGeomPar. Output of the calculation is the minimum distance from the wire
 and the impact angle in the coordinate system of the cell. All values are stored in the
 HMdcGeantCell for a maximum number of 15 hits per cell via
 HMdcDigitizer::storeCell(Float_t per, Float_t tof, Float_t myangle, Int_t trkNum,
			    Bool_t flagCutEdge,Floa_t wireOffset).

 CALCULATION OF DRIFT TIMES:
 For each cell the drift time1 and time2 are calculated by corresponding functions of
 the HMdcCal2ParSim container which holds the calibration parameters for the "distance->drift time"
 calculation:
 HMdcCal2ParSim::calcTimeDigitizer (sector,module,angle,minDist,&time1,&time1Error) and
 HMdcCal2ParSim::calcTime2Digitizer(sector,module,angle,minDist,&time2,&time2Error).
 If setDeDxUse(kTRUE) (default) is chosen , the time to is calculated via
 HMdcDeDx2::scaledTimeAboveThreshold() inverse by the energy loss - Time over Threshold
 relation ship to assure compatible ToT/DeDx values for experimnt and simulation. The
 parameters for this transformation are obtained from experimental data.

 CALCULATION OF WIRE OFFSET:
 calcWireOffset(xcoor,ycoor,wOrient) calulates the time the signal of a given cell would take
 to popagate from the hit point to the readout electronis. The speed of the signal is taken from
 HMdcDigitPar::getSignalSpeed()(ns/mm). Internal functions of HMdcSizesCells are called to calulate
 the path length of the signal.

 EFFICIENCY CUTS:
 For each cell the efficiency cuts are calculated by a function of
 HMdcCellEff::calcEfficiency(module,minDist,angle,Level) which holds
 the information for the efficiency cuts on cell level. The level of the cuts can be specified
 by  HMdcDigitizer::setEffLevel(90.,90.,90.,90.) per module. The cut is done on the basis of GARFIELD
 simulations which give information on the charge which is collected on the sense wire of
 each cell for all combinations of distance and impact angle. The numbers which have to be set
 are the percentage of maximum charge required to make a signal. Hits which are on the edge of
 the drift cell will not create a big amount of charge and therefore will be kicked out first.
 The second cut on the layer level is an overall layer efficiency (e.g. 0.98 for 98% Efficiency)
 and will reduce the overall number of fired cells. This value is taken from HMdcDigiPar container.

 SIMULATION OF DEAD WIRES:
 With setWireStatUse(kTRUE) the dead wires of the real data are correctly taken into account.
 This cut is handled in the same way as the effciency cuts and has the top priority
 (wire stat -> cell efficieny -> layer efficiency). In all cases the drift time will be set to -999.
 To get the correct result one has to analyze the status flags! The Information about the status
 of the wire is taken from HMdcWireStat.

 SELECTING 1. AND 2. VALID HIT:
 According to the the cuts a list of status flags for each recorded track is filled.
 After all calculations the list of Tracks is sorted by the arrival time (tof + drift time + wire offset) by
 HMdcDigitizer::select(Int_t nHits) because only the first track will create a signal.
 The first valid hit (status=1) inside the track list will be found by
 HMdcDigitizer::findFirstValidHit(Int_t* firsthit, Float_t* firsttime2, Int_t* endlist1)
 which returns the index number of the first valid hit and the the last hit which falls
 into the given time window defined by time2 of first valid hit.
 HMdcDigitizer::findSecondValidHit(Int_t endlist1,Int_t* secondhit)
 finds a second valid hit starting with the last entry of the list of the first valid hit.
 All variables will return -999 if no valid hits are found.

 FILLING OUTPUT:
 According to the two different TDC modes the HMdcCal1Sim category is filled.
 If HMdcDigitizer::setTofUse(kFALSE) is selected, the time of flight will be substracted and
 only the drift time is written to the output. With HMdcDigitizer::setOffsets(1.5,2.5,4.5,5.5, 0 or 1)
 a common minimum offset (fast particles) per module type can be set and will be subtracted
 from the calculated time to be closer to the real measurement situation.
 With setErrorUse(kFALSE) the digitizer can be forced to write the drift times without error smearing to the
 output.

 NOISE SIMULATION:
 Noise simulation should be used only in TDC mode 2 (leading + trailing edge)
 and not in embedding mode!
 The noise simulation is done after output data have been already filled to HMdcCal1 category.
 a loop over the category is performed and the noise is filled in 2 ways.
 1. a loop over all existing cells in the setup of Mdc is done and randomly picked cells
    are filled width noise and added to the category ("only noise" cells).
 2. For the existing cells filled with GEANT data a comparison between the randomly created noise
    time and the real time is done (if setNoiseMode(1)). The earlier of both is taken and if the noise wins
    the status flags are changed accordingly.
 With HMdcDigitizer::setNoiseLevel(5.,5.,5.,5.) the simulation of noise can be switched on.
 HMdcDigitizer::fillNoise() loops over all cells existing in the actual setup and will randomly
 pick cells according to the specified probability per module (5.==5%) and set the statusflag to 2.
 If a cell is selected for noise production a second random process generates the time in the
 range of the specified window set by HMdcDigitizer::setNoiseRange(low1,low2,low3,low4,hi1,hi2,hi3,hi4).
 The behaviour of the noise generation can be specified with
 1. setNoiseBandWidth(width)       (time-above threshold bump 0-width ns)
 2. setNoiseWhiteWidth(upperrange) (upper range in time-above threshold for white noise outside the bump)
 3. setNoiseWhiteRatio(ratio);     (ratio between bump/white noise
 With HMdcDigitizer::setNoiseMode(1)(default) a given time in one of the original GEANT cells
 will be overwritten by the the noise time, if timenoise < time.In this case the statusflag of
 the cell will be set to 2 (valid hit but noise).In the case of HMdcDigitizer::setNoiseMode(2) the
 original GEANT cells will not be touched.

 EVENT EMBEDDING:
 In the embedding case of GEANT data into REAL data, the digitizer looks to the HMdcCal1Sim and gets the
 data words filled with the REAL data by the HMdcCalibrater1 which would fall in the same Cells as the
 GEANT data. If the embedding mode is set to 1 (default) the digitizer will do a "realistic" merging,
 that means, the first hit from REAL or GEANT data will be accepted. In embedding mode 2 the GEANT data
 will be allways kept and the coresponding REAL data will be overwritten by GEANT data. The embedding
 mode can be switched by HMdcDigitizer::setEmbeddingMode(Int_t)(1=realistic,2=keep Geant data).
 The status flag of REAL data will be 0, where as in the listStatus[5] the status flag will be 3 for
 REAL data hits which are merged into GEANT cells. The track number of real data HMdcCalSim objects will
 be the common track number which can be retrieved via gHades->getEmbeddingRealTrackId().


 SPECIAL FEATURES:
creating offsets to simulate calibrated offsets
 the impact of calibration of time offsets can be simulated too (by default this feature is not used).
 The offsets will be random generated from gRandom->Gaus(mean,sig).
  void    setSigmaOffsets(Float_t sig)      (default is 2ns)
  void    setCreateOffsets(Bool_t kTRUE)    (create new table of offsets)
  void    initOffsets(TString filename)     (if createoffsets=kTRUE a new table will be created and stored
                                             to file filename (if not "")
                                             if createoffsets=kFALSE and filename is provided the table
                                             will be read from ascii file)

manipulate drift times (tdc slope time errors...)
  void    setScaleTime(Float_t scale)        drift times will be scaled by scale (defualt 1.0)
  void    setScalerTime1Err(Float_t m0=0,Float_t m1=0,Float_t m2=0,Float_t m3=0) (default 1.0)
                                             drift times errors (time1) will be scaled per module

 MODE 1 (two times LEADING EDGE of the TDC signal)
           nHits ==  -2 for 2 valid hits
                 ==  -1 for 1 valid hit
                 ==   0 for a not filled hit (e.g. 1 hit was kicked out by efficiency)
         status1 ==   1 for a valid first hit
                 ==   2 for a valid first hit caused by noise
                 ==  -3 for a not valid hit
                 ==  -5 for cutted by time cut
                 ==   0 no hit
                 ==   3 for REAL data (embedding)
         status2 ==   1 for a valid second hit
                 ==   2 for a valid second hit caused by noise
                 ==  -3 for a not valid hit
                 ==  -5 for cutted by time cut
                 ==   0 no hit
                 ==   3 for REAL data (embedding)
         angle1  ==   impact of track1 or -99 if not filled
         angle2  ==   impact of track2 or -99 if not filled
         minDist1==   minimum distance of track1 or -99 if not filled
         minDist2==   minimum distance of track2 or -99 if not filled
         error1  ==   error of time1
         error2  ==   error of time1 of the second valid hit or -99 if not filled
         tof1    ==   tof of time1
         tof2    ==   tof of time1 of the second valid hit or -99 if not filled
         wireOff1==   signal time on wire of track1 or -99 if not filled
         wireOff2==   signal time on wire of track2 or -99 if not filled
         nTrack1 ==   track number of the first valid hit
                 ==  -99 if not filled
         nTrack2 ==   track number of the second valid hit
                 ==  -99 if not filled
         time1   ==   drift time1 of the first valid hit
                 ==  -999 if not filled
         time2   ==   drift time1 of the second valid hit
                 ==  -999 if not filled
     listTrack[5] :   contains the track number of the first 5 hits per cell
                      == -99 if no hit was filled or noise
     listStatus[5]:   contains the status flags of the first 5 hits per cell
                      == -1 if hit was kicked out by cell efficiency cut
                      == -2 if hit was kicked out by layer efficiency cut
                      == -3 if hit was kicked out by wire stat
                      == -4 if hit was kicked out by noise
                      == -5 if cutted by time cut
                      ==  1 if hit is valid
                      ==  2 if hit is noise
                      ==  3 if hit is real data (embedding)
                      ==  0 if no hit was filled
     both lists will be filled even if no vaild hit was found

 MODE 2 (LEADING AND TRAILING EDGE of the TDC signal)
           nHits ==  +2 for 2 valid hits
                 ==   0 for not filled hit (e.g. 1 hit was kicked out by efficiency)
         status1 ==   1 for a valid first hit
                 ==   2 for a valid first hit caused by noise
                 ==  -3 for a not valid hit
                 ==  -5 for cutted by time cut
                 ==   0 or no hit
                 ==   3 REAL data (embedding)
         status2 ==   1 for a valid first hit
                 ==   2 for a valid first hit caused by noise
                 ==  -3 for a not valid hit
                 ==  -5 for cutted by time cut
                 ==   no hit
                 ==   3 for REAL data (embedding)
         angle1  ==   impact of track1 or -99 if not filled
         angle2  ==   impact of track1 or -99 if not filled
         minDist1==   minimum distance of track1 or -99 if not filled
         minDist2==   minimum distance of track1 or -99 if not filled
         error1  ==   error of time1 or -99 if not filled
         error2  ==   error of time2 or -99 if not filled
         tof1    ==   tof of time1 or -99 if not filled
         tof2    ==   tof of time2 or -99 if not filled
         wireOff1==   signal time on wire of track1 or -99 if not filled
         wireOff2==   signal time on wire of track1 or -99 if not filled
         nTrack1 ==   track number of first valid hit
                 ==  -99 if not filled
         nTrack2 ==   track number of first valid hit
                 ==  -99 if not filled
         time1   ==   drift time1 of the first valid hit
                 ==  -999 if not filled
         time2   ==   drift time2 of the first valid hit
                 ==  -999 if not filled
     listTrack[5] :   contains the track number of the first 5 hits per cell
                      == -99 if no hit was filled or noise
     listStatus[5]:   contains the status flags of the first 5 hits per cell
                      == -1 if hit was kicked out by cell efficiency cut
                      == -2 if hit was kicked out by layer efficiency cut
                      == -3 if hit was kicked out by wire stat
                      == -4 if hit was kicked out by noise
                      == -5 if cutted by time cut
                      ==  1 if hit is valid
                      ==  2 if hit is noise
                      ==  3 if hit is real data (embedding)
                      ==  0 if no hit was filled
     both lists will be filled even if no vaild hit was found

     EXAMPLES :
     In general: if nHits<0 ->TDC MODE=1
                 if nHits>0 ->TDC MODE=2
                 if status1/status2>0 -> valid hit (1: normal, 2: noise)
                 if status1/status2<0 -> no valid hit (-3)

     TDC MODE 1 (2 leading edges)
     no valid hit:  status1=status2=-3 rest will be filled like normal hits
     1 valid hit :  time1!=-999,time2=-999,status1=1,status2=-3,nHits=-1,nTrack1!=-99,nTrack2=-99
     2 valid hits:  time1!=-999,time2!=-999,status1=status2=1,nHits=-2,nTrack1!=-99,nTrack2!=-99
     noise hit   :  if GEANT hit was overwritten:status1/status2 =2 rest filled like normal hits
                    if a noise cell was added to GEANT cells:
                    time1!=-999,time2=-999,status1=2,status2=-3,nHits=-1,
                    nTrack1=nTrack2=-99

     TDC MODE 2 (leading and trailing edge)
     no valid hit:  status1=status2=-3 rest will be filled like normal hit
     1 valid hit :  time1!=-999,time2!=-999,status1=status2=1,nHits=2,nTrack1=nTrack2!=-99
     noise hit   :  if GEANT hit was overwritten:status1=status2=2 rest filled like normal hits
                    if a noise cell was added to GEANT cells:
                    time1!=-999,time2!=-999,status1=status2=2,nHits=2,
                    nTrack1=nTrack2=-99

    MODE1 and MODE2 :

    if status1/status2=-3 looking to the StatusList[5]: -1 cut on Cell efficiency
                                                        -2 cut on Layer efficiency
    The TrackList[5] will be filled with the GEANT track numbers no matter if the hit was
    valid or not or overwritten by noise!

Function Members (Methods)

public:
HMdcDigitizer()
HMdcDigitizer(const Text_t* name, const Text_t* title)
HMdcDigitizer(const Text_t* name, const Text_t* title, Int_t, Bool_t)
virtual~HMdcDigitizer()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidHReconstructor::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTNamed::Clear(Option_t* option = "")
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual Int_tTNamed::Compare(const TObject* obj) const
virtual Bool_tHReconstructor::connectTask(HTask* task, Int_t n = 0)
virtual voidTNamed::Copy(TObject& named) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual Int_texecute()
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual Bool_tfinalize()
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Bool_tgetCellEffUse()
virtual HTask*HReconstructor::getComposite()
virtual voidHReconstructor::getConnections()
Bool_tgetCreateOffsets()
Bool_tgetDeDxUse()
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Int_tgetEmbeddingMode()
Bool_tgetErrorUse()
virtual const char*TObject::GetIconName() const
virtual const char*TNamed::GetName() const
Float_tgetNoiseBandWidth()
Int_tgetNoiseMode()
Bool_tgetNoiseUse()
Float_tgetNoiseWhiteRatio()
Float_tgetNoiseWhiteWidth()
Bool_tgetNTuple()
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
Bool_tgetOffsetsUse()
virtual Option_t*TObject::GetOption() const
virtual HTask*HTask::getOwner()
Float_tgetScaleTime()
Float_tgetSigmaOffsets()
Float_tgetSignalSpeed()
TObjArrayHReconstructor::getTable()
virtual HTask*HReconstructor::getTask(const Char_t* name)
Int_tgetTdcMode()
Bool_tgetTimeCutUse()
virtual const char*TNamed::GetTitle() const
Bool_tgetTofUse()
virtual UInt_tTObject::GetUniqueID() const
Bool_tgetWireOffsetUse()
Bool_tgetWireStatEffUse()
Bool_tgetWireStatOffsetUse()
Bool_tgetWireStatUse()
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual Bool_tinit()
voidinitOffsets(TString filename = "")
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tHReconstructor::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTNamed::IsSortable() const
virtual voidHReconstructor::isTimed(Bool_t flag = kTRUE)
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual HTask*HReconstructor::next(Int_t& errCode)
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
HTask&HTask::operator=(const HTask&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTNamed::Print(Option_t* option = "") const
voidprintStatus()
virtual voidHReconstructor::printTimer()
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Bool_treinit()
voidTObject::ResetBit(UInt_t f)
virtual voidHReconstructor::resetTimer()
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidHReconstructor::setActive(Bool_t state)MENU
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidsetCellEffUse(Bool_t use)
virtual Bool_tHTask::setConnections()
voidsetCreateOffsets(Bool_t create = kTRUE)
voidsetDeDxUse(Bool_t use)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidsetEffLevel(Float_t eff0, Float_t eff1, Float_t eff2, Float_t eff3, Int_t on_off = 1)
voidsetEmbeddingMode(Int_t mode)
voidsetErrorUse(Bool_t use)
voidHTask::setManual()
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
voidsetNoiseBandWidth(Float_t w)
voidsetNoiseLevel(Float_t noise0, Float_t noise1, Float_t noise2, Float_t noise3, Int_t on_off = 1)
voidsetNoiseMode(Int_t mode)
voidsetNoiseRange(Int_t rangeLo0, Int_t rangeLo1, Int_t rangeLo2, Int_t rangeLo3, Int_t rangeHi0, Int_t rangeHi1, Int_t rangeHi2, Int_t rangeHi3)
voidsetNoiseUse(Bool_t use)
voidsetNoiseWhiteRatio(Float_t w)
voidsetNoiseWhiteWidth(Float_t w)
voidsetNTuple(Bool_t ntuple)
static voidTObject::SetObjectStat(Bool_t stat)
voidsetOffsets(Float_t off0, Float_t off1, Float_t off2, Float_t off3, Int_t on_off = 1)
voidsetOffsetsUse(Bool_t use)
virtual voidHTask::setOwner(HTask* atask)
voidsetScalerTime1Err(Float_t m0 = 0, Float_t m1 = 0, Float_t m2 = 0, Float_t m3 = 0)
voidsetScaleTime(Float_t scale)
voidsetSigmaOffsets(Float_t sig)
voidsetSignalSpeed(Float_t speed)
voidsetTdcMode(Int_t mode)
voidsetTimeCutUse(Bool_t use)
virtual voidTNamed::SetTitle(const char* title = "")MENU
voidsetTofUse(Bool_t use)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidsetWireOffsetUse(Bool_t use)
voidsetWireStatEffUse(Bool_t use)
voidsetWireStatOffsetUse(Bool_t use)
voidsetWireStatUse(Bool_t use)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual Int_tTNamed::Sizeof() const
virtual voidStreamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
Float_tcalcWireOffset(Float_t, Float_t, Float_t)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Bool_tevalWireStat(Int_t, Int_t, Int_t, Int_t)
voidfillArrays(Int_t, Int_t, Int_t, HMdcGeantCell*)
voidfillArraysReal(Int_t i)
voidfillNoise(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t)
voidfillNoiseLists(HMdcCal1Sim* cal1, Int_t, Int_t)
voidfillNoiseToGeantCells(Int_t, HMdcCal1Sim* p)
voidfillNTuple(Int_t, Int_t, Int_t, Int_t, Int_t, HMdcGeantCell*, TNtuple*)
voidfillNTuple(Int_t, Int_t, Int_t, Int_t, Float_t, Float_t, Int_t)
Float_tfillTime1Noise(Int_t)
Float_tfillTime2Noise(Int_t)
voidfillTrackList(HMdcCal1Sim*)
voidfindFirstValidHit()
Int_tfindNonValidHit()
voidfindSecondValidHit()
Float_tgetAngle(Int_t i)
voidgetCal1Real()
Float_tgetCellEffLevel(Int_t i)
Bool_tgetCutEdge(Int_t i)
Float_tgetDTime1(Int_t i)
Float_tgetDTime1Err(Int_t i)
Float_tgetDTime2(Int_t i)
Float_tgetDTime2Err(Int_t i)
Int_tgetEndList1()
Int_tgetFirstHit()
Float_tgetFirstTime2()
Float_tgetFractionOfmaxCharge(Int_t i)
voidgetMdcSetup()
Float_tgetMinimumDist(Int_t i)
Int_tgetNHitsReal()
Float_tgetNoiseLevel(Int_t i)
Int_tgetNoiseRangeHi(Int_t i)
Int_tgetNoiseRangeLo(Int_t i)
Float_tgetOffset(Int_t i)
Int_tgetSecondHit()
Int_tgetStatus(Int_t i)
Float_tgetTime1Noise()
Float_tgetTime1Real()
Float_tgetTime2Noise()
Float_tgetTime2Real()
Float_tgetTof(Int_t i)
Int_tgetTrackN(Int_t i)
Float_tgetWireOffset(Int_t i)
voidhandleOverFlow(Int_t, Int_t, Int_t, Int_t)
voidinitArrays()
voidinitVariables()
voidTObject::MakeZombie()
voidresetCal1Real()
voidresetListVariables()
voidselect(Int_t)
voidsetAngle(Int_t i, Float_t a)
voidsetCutEdge(Int_t i, Bool_t cut)
voidsetDTime1(Int_t i, Float_t time)
voidsetDTime1Err(Int_t i, Float_t timeErr)
voidsetDTime2(Int_t i, Float_t time)
voidsetDTime2Err(Int_t i, Float_t timeErr)
voidsetEfficiencyFlags(Int_t, Int_t, Int_t, Int_t)
voidsetEndList1(Int_t end)
voidsetFirstHit(Int_t hit1)
voidsetFirstTime2(Float_t time2)
voidsetFractionOfmaxCharge(Int_t i, Float_t f)
voidsetLoopVariables(Int_t, Int_t, Int_t, Int_t, Bool_t check = kFALSE)
voidsetMinimumDist(Int_t i, Float_t dist)
voidsetNHitsReal(Int_t i)
voidsetNTuples()
voidsetParContainers()
voidsetSecondHit(Int_t hit2)
voidsetStatus(Int_t i, Int_t stat)
voidsetTime1Noise(Float_t time)
voidsetTime1Real(Float_t t1)
voidsetTime2Noise(Float_t time)
voidsetTime2Real(Float_t t2)
voidsetTimeCutFlags(Int_t, Int_t, Int_t, Int_t)
voidsetTof(Int_t i, Float_t tof)
voidsetTrackN(Int_t i, Int_t number)
voidsetWireOffset(Int_t i, Float_t off)
voidstoreCell(Float_t, Float_t, Float_t, Int_t, Bool_t, Float_t)
Bool_ttestMdcSetup(Int_t s, Int_t m)
Bool_ttransform(Float_t, Float_t, Float_t, Float_t, Float_t, Int_t)

Data Members

public:
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
Bool_tHReconstructor::fActiveActive flag
TList*HReconstructor::fHistogramsList of histograms generated by this reconstructor.
Bool_tHTask::fIsTimedtimer flag
TStringTNamed::fNameobject identifier
TObjArrayHReconstructor::fOutputs
TStopwatchHReconstructor::fTimerTask timer
TStringTNamed::fTitleobject title
Bool_tHTask::isConnected
Bool_tHTask::isInitialised
Bool_tHTask::manual
HTask*HTask::owner
private:
static Float_tangle[15]! impact angle in coordinate system of the cell
Int_tarrayNoise[5]! temp array for status of noise
Bool_tcreateoffsets! switch kTRUE: create offsets,kFALSE: read from file
static Bool_tcutEdge[15]! flag for minimum distance point out of cell
static Float_tdTime[15]! drift time1 + tof
static Float_tdTime2[15]! drift time2 + tof
static Float_tdTime2Err[15]! error of drift time2
static Float_tdTimeErr[15]! error of drift time1
TNtuple*distance_time! nTuple for internal information of the digitizer
Float_teffLevel[4]! level of requiered maximum charge to create a signal (for example 20 (=20%))
Int_tembeddingmodeswitch for keeping geant hits / realistic embedding
Int_tendList1! end of the list of hits belonging to the first valid hit
HMdcCal1Sim*fCal! pointer to data
HMdcCal2ParSim*fCal2ParSim! pointer to cal2 parameter container
HCategory*fCalCat! Pointer to cal data category
HMdcCal1Sim*fCalnoise! pointer to noise data
HMdcGeantCell*fCell! pointer to Container for HMdcGeantCell
HMdcCellEff*fCellEff! pointer to cell efficiency parameter container
HMdcLayerGeomPar*fDigitGeomPar! Digitisation "geom" parameters
HMdcDigitPar*fDigitPar! Digitisation "phys" parameters
Int_tfEventId! Number of current event
HCategory*fGeantCellCat! Pointer to sim data category
HCategory*fGeantKineCat! HGeantKine input data
HCategory*fGeantMdcCat! MDC HGeant input data
HMdcTimeCut*fTimeCut! pointer to time cut parameter container
HMdcWireStat*fWireStat! pointer to wire status parameter container
HMdcDeDx2*fdEdX! pointer to MdcDeDx2 parameter container
Int_tfirstHit! number of first valid hit
Float_tfirstTime2! time2 of first valid hit
Int_tfirstcell
Int_tfirstlay
Int_tfirstmod
Int_tfirstsec
Bool_tfntuple! switch for use/not use NTuple
static Float_tfractionOfmaxCharge[15]! value for fraction of maximum charge
HMdcSizesCells*fsizescells! pointer to hmdcsizescells parameter container
HMdcGeomStruct*geomstruct! pointer to hmdcgeomstruct parameter container
Bool_thasPrinted! flag is set , if printStatus() is called
HMdcGeantCell*hit! Pointer to HMdcGeantCell hit
HMdcGeantCell*hitReal! Pointer to HMdcGeantCell hit
HIterator*itercal1! Iterator over cal1 category
HIterator*itercell! Iterator over cell category
HIterator*iterin! Iterator over input category
HLocationloc! Location for new object
HLocationlocnoise! Location for new object
static Float_tminimumdist[15]! minimum distance to wire
Int_tmodetdc! 2 leading edges or leading and trailing edge of the signal
Float_tmyalpha! impact angle of the track in coordinate system of HMdcCal2ParSim
TFile*myoutput! file pointer for NTuple
Int_tnHitsReal! number of hists from real data
Float_tnoiseLevel[4]! level of randon noise for each module type
Int_tnoiseRangeHi[4]! upper range of noise for each mdc type
Int_tnoiseRangeLo[4]! lower range of noise for each mdc type
Float_tnoisebandwidth! width of t2-t1 band in noise
Int_tnoisemode! switch for different noise modes
Float_tnoisewhiteratio! ration between large region and band in noise
Float_tnoisewhitewidth! width of t2-t1 large region in noise
Float_toffsets[4]! offsets are used to substract min tof
Bool_toffsetsCreated! remember if offsets were created or read from ascii file
Float_tpi! Il y quatre pis a une vache
Float_trndmoffsets[6][4][6][220]! random offsets to simulate calibrated offsets
Float_tscaleError[4]! scaler for error of time per module type
Float_tscaletime! simple scaler for manipulating drift times (as done by tdc slopes)
Int_tsecondHit! number of second valid hit
Int_tsetup[6][4]! setup of Mdc (sec,mod)
Float_tsigmaoffsets! sigma of the gausian random offset distribution
Float_tsignalSpeedspeed of signal on the wire
static Int_tstatusflag[15]! flag for efficiency
Float_ttime1! drift time1 calculated by HMdcCal2ParSim
Float_ttime1Error! drift time1 error calculated by HMdcCal2ParSim
Float_ttime1Real! drift time1 from real data
Float_ttime1noise! time1 generated by the noise generator
Float_ttime2! drift time2 calculated by HMdcCal2ParSim
Float_ttime2Error! drift time2 error calculated by HMdcCal2ParSim
Float_ttime2Real! drift time2 from real data
Float_ttime2noise! time2 generated by the noise generator
static Float_ttimeOfFlight[15]! tof
static Int_ttrack[15]! track numbers
Bool_tuseCellEff! switch for use/not use cell efficiency cut
Bool_tuseDeDx2! flag for use/don't use MdcDeDx2 container for t2-t1 simulation
Bool_tuseError! flag for use/don't use error in time1/time2 in output
Bool_tuseNoise! switch for use/not use of noise generator
Bool_tuseOffsets! switch for use/not use offset substraction in output
Bool_tuseTimeCut! flag for use/don't use MdcTimeCut container
Bool_tuseTof! switch for use/not use of tof in output
Bool_tuseWireOffset! flag for use/don't use error in time1/time2 in output
Bool_tuseWireStat! switch for use/not use wire stat container
Bool_tuseWireStatEff! switch for use/not use eff from wire stat container (default = kTRUE)
Bool_tuseWireStatOffset! switch for use/not use offset from wire stat container (default = kTRUE)
static Float_twireOffset[15]! time for signal propagation on the wire
Float_tyDist! Distance to the sence wire

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

HMdcDigitizer(void)
HMdcDigitizer(const Text_t* name, const Text_t* title)
HMdcDigitizer(const Text_t* name, const Text_t* title, Int_t , Bool_t )
 TDCMODE sets the simulation mode to the two different
 possibilities of the TDC: 1 == to leading edges
                           2 == leading and trailing edge
 NTUPLE switches the NTuple with the internal information of
 the digitizer ON or OFF:   kFALSE == no NTuple filled
                            kTRUE  == NTuple filled.
~HMdcDigitizer(void)
void setOffsets(Float_t off0, Float_t off1, Float_t off2, Float_t off3, Int_t on_off = 1)
 set global time offsets per drift chamber type in nano seconds.
 The offsets will be substracted from the drift times if on_off == 1

void setEffLevel(Float_t eff0, Float_t eff1, Float_t eff2, Float_t eff3, Int_t on_off = 1)
 set Cell efficiency level per drift chamber type.
 settings will be used if on_off == 1.
void setNoiseLevel(Float_t noise0, Float_t noise1, Float_t noise2, Float_t noise3, Int_t on_off = 1)
 set the noise level per drift chambers in per cent.
 noise simulation will be used if on_off == 1
void setNoiseRange(Int_t rangeLo0, Int_t rangeLo1, Int_t rangeLo2, Int_t rangeLo3, Int_t rangeHi0, Int_t rangeHi1, Int_t rangeHi2, Int_t rangeHi3)
 set the noise range in time1 in nano seconds per chamber type.
void setScalerTime1Err(Float_t m0 = 0, Float_t m1 = 0, Float_t m2 = 0, Float_t m3 = 0)
 set the scaler values for error of time1 per chamber type.
void initVariables()
 sets all used variables to the initial values
void setParContainers()
 Get pointers to the needed containers.The containers are
 created and added to the runtime Database if the are not existing
void setNTuples(void)
 Creates an NTuple for the internal infomation of the digitizer
 which is stored in the file digitizer.root in the working directory.
 The NTuple contains
 sec,mod,lay,cell: the "software address" of a single cell
 dist,angle: minimum distance of the track to the wire
             and impact angle in coordinates of the cell
 time1, time1Err,time2,time2Err: values for the drift times
 tof: time of flight
 cutEdge: 0 if minimum distance smaler than cell bounderies, 1 if larger
 status: 1 if valid hit, 2 if noise, 3 for REAL data
        -1 if cut by cell efficiency
        -2 if cut by layer efficiency
 track: track number (-99 if no real track)
 eff:   efficiency value which would correspond to a cut on this minimum dist
Bool_t init(void)
 The parameter containers and the iterators over
 the categorys MdcGeanRaw, MdcGeantCell and MdcCal1Sim are created.
 The actual setup of the Mdc detector in the running analysis
 is retrieved.
Bool_t reinit(void)
 setup some local variables which need already initialized
 parameter containers.
void printStatus()
 Prints the Options, default settings and
 actual configuration of HMdcDigitizer.
Bool_t finalize(void)
 If NTuple exist it will be written to digitizer.root.
Int_t execute(void)
 GEANT data are retrieved from HGeantMdc.
 The GEANT hits will be transformed to the
 layer coordinate system of the Mdc to find
 the fired cells. For the fired cells the drift time
 calulation, noise generation and efficiency cuts will
 be performed according to the settings and the results
 will be stored in HMdcCal1Sim.
void fillArrays(Int_t , Int_t , Int_t , HMdcGeantCell* )
 All needed Arrays for the calculations are
 filled (minimumdist,angle,tracknumber,tof,time1,time2,time1err,time2err)
void fillArraysReal(Int_t i)
 All needed Arrays for the calculations are
 filled for the REAL hits (minimumdist,angle,tracknumber,tof,time1,time2,time1err,time2err)
void setEfficiencyFlags(Int_t , Int_t , Int_t , Int_t )
 Cuts for cell efficiency layer efficiency and wire status are checked
 and the statusflag of the cells are set correspondingly
 Has to be done for sim tracks only!
void setTimeCutFlags(Int_t , Int_t , Int_t , Int_t )
 Cuts for drit times and the statusflag of the cells are set
 correspondingly. Has to be done for sim tracks only!
Bool_t evalWireStat(Int_t , Int_t , Int_t , Int_t )
 gets the status of the wire from HMdcWireStat.
 returns kFALSE if wire is dead or not connected.
void initArrays()
 init working arrays with default values
void resetListVariables()
 reset the list variables for the search of valid
 hits
void resetCal1Real()
 reset the local variables for the
 real cal1 hit
void getCal1Real()
 copy time1, time2 and nhits from
 real cal1 object to local variables
void fillNTuple(Int_t sec,Int_t mod,Int_t lay,Int_t cell,Int_t ihit, HMdcGeantCell* fCell, TNtuple* distance_time)
 The NTuple is filled with internal data of the digitizer
void fillNTuple(Int_t sec,Int_t mod,Int_t lay,Int_t cell, Float_t time, Float_t time2, Int_t status)
 The NTuple is filled with internal data of the digitizer
 in the case of noise generation
Float_t fillTime1Noise(Int_t )
 A random time in a specified time window
 for the noise simulation is calculated
Float_t fillTime2Noise(Int_t )
 A random time in a specified time window
 for the noise simulation is calculated
void fillNoiseLists(HMdcCal1Sim* cal1, Int_t , Int_t )
void fillNoiseToGeantCells(Int_t , HMdcCal1Sim* p)
 If timenoise < time of the first valid GEANT hit
 the time is replaced by timenoise and the
 statusflag is changed from 1 (valid) to 2 (valid but noise)
void setLoopVariables(Int_t , Int_t , Int_t , Int_t , Bool_t check = kFALSE)
void handleOverFlow(Int_t , Int_t , Int_t , Int_t )
 if last cell in Layer has been reached
 the next valid cell in setup has to be taken
void fillNoise(Int_t , Int_t , Int_t , Int_t , Int_t , Int_t , Int_t , Int_t )
 Fills the noise cells to Cal1Sim up to the next GEANT Cell
 and the rest of the noise cells after the last GEANT Cell (if
 input lastcell==999).
void fillTrackList(HMdcCal1Sim* )
 fills track list and status list for hits in both tdc modes
void findFirstValidHit()
 Function to find the first valid hit (statusflag > 0) inside the
 array for both tdc modes. Returns the number of the element of the
 first valid hit and last hit inside the time  window to variables.
void findSecondValidHit()
 Function to find the second valid hit (statusflag > 0) inside the
 array for tdc mode1. Returns the number of the element of the second
 valid hit
Int_t findNonValidHit()
 Function to find the first valid hit (statusflag > 0) inside the
 array for both tdc modes. Returns the number of the element of the
 first valid hit and last hit inside the time  window to variables.
void select(Int_t )
 Puts the drift time values into increasing order.
 Orders the corresponding track number, time of flight, statusflag
 and impact angle etc accordingly
void getMdcSetup()
 Gets Mdc detector setup
Bool_t testMdcSetup(Int_t s, Int_t m)
 Tests the Mdc setup if the modules are present
 in the running analysis
Bool_t transform(Float_t , Float_t , Float_t , Float_t , Float_t , Int_t )
 Gets the x,y coordinates, theta and phi, time of flight and track number.
 From the coordinates and angles the hits in the cells are calculated.
 All needed parameters are taken from HMdcLayerGeomPar and HMdcDigitPar
 containers.
Float_t calcWireOffset(Float_t , Float_t , Float_t )
 calculate the time needed by the signal to propagate to the tdc
void storeCell(Float_t , Float_t , Float_t , Int_t , Bool_t , Float_t )
 Puts the data (minimum distance, time of flight, impact angle,
 track number, flagCutEdge) to HMdcGeantCell Category
void initOffsets(TString filename = "")
 if createoffsets=kTRUE (setCreateOffsets()) a gausian distribution arround 0 with
 sigma = sigmaoffsets is created (setSigmaOffsets(Float_t sig)). The values are written
 to a ascii file "filename" for future use (if this file exists, it
 will be over written!).
 If createoffsets=kFALSE the offsets will not be recreated and instead the digitizer will
 read them from ascii file "filename".
 Format :  sector module layer cell offset
void setNoiseBandWidth(Float_t w)
{noisebandwidth = w; }
void setNoiseWhiteWidth(Float_t w)
{noisewhitewidth = w; }
void setNoiseWhiteRatio(Float_t w)
{noisewhiteratio = w; }
Float_t getNoiseBandWidth()
{return noisebandwidth; }
Float_t getNoiseWhiteWidth()
{return noisewhitewidth; }
Float_t getNoiseWhiteRatio()
switches for cal1sim output
{return noisewhiteratio; }
void setErrorUse(Bool_t use)
{useError = use; }
void setTofUse(Bool_t use)
{useTof = use; }
void setWireOffsetUse(Bool_t use)
{useWireOffset = use; }
void setOffsetsUse(Bool_t use)
{useOffsets = use; }
void setCellEffUse(Bool_t use)
{useCellEff = use; }
void setWireStatUse(Bool_t use)
{useWireStat = use; }
void setNoiseUse(Bool_t use)
{useNoise = use; }
void setDeDxUse(Bool_t use)
{useDeDx2 = use; }
void setTimeCutUse(Bool_t use)
{useTimeCut = use; }
Bool_t getErrorUse()
{return useError; }
Bool_t getTofUse()
{return useTof; }
Bool_t getWireOffsetUse()
{return useWireOffset; }
Bool_t getOffsetsUse()
{return useOffsets; }
Bool_t getCellEffUse()
{return useCellEff; }
Bool_t getWireStatUse()
{return useWireStat; }
Bool_t getNoiseUse()
{return useNoise; }
Bool_t getDeDxUse()
{return useDeDx2; }
Bool_t getTimeCutUse()
privat ntuple out
{return useTimeCut; }
void setNTuple(Bool_t ntuple)
{fntuple = ntuple;}
void setTdcMode(Int_t mode)
{modetdc = mode; }
void setNoiseMode(Int_t mode)
{noisemode = mode; }
void setEmbeddingMode(Int_t mode)
{embeddingmode = mode; }
Bool_t getNTuple()
{return fntuple; }
Int_t getTdcMode()
{return modetdc; }
Int_t getNoiseMode()
{return noisemode; }
Int_t getEmbeddingMode()
signal speed for wireoffsets
{return embeddingmode; }
void setSignalSpeed(Float_t speed)
{signalSpeed = speed; }
Float_t getSignalSpeed()
{return signalSpeed; }
void setScaleTime(Float_t scale)
manipulate drift times (tdc slope...)
{scaletime = scale; }
Float_t getScaleTime()
{return scaletime;}
void setWireStatOffsetUse(Bool_t use)
creating offsets to simulate calibrated offsets
{useWireStatOffset = use; }
Bool_t getWireStatOffsetUse()
{return useWireStatOffset; }
void setSigmaOffsets(Float_t sig)
{sigmaoffsets = sig; }
void setCreateOffsets(Bool_t create = kTRUE)
{createoffsets = create;}
Float_t getSigmaOffsets()
{return sigmaoffsets;}
Bool_t getCreateOffsets()
{return createoffsets;}
void setWireStatEffUse(Bool_t use)
using efficiency
{useWireStatEff = use; }
Bool_t getWireStatEffUse()
{return useWireStatEff; }
void setTime1Real(Float_t t1)
{time1Real = t1; }
void setTime2Real(Float_t t2)
{time2Real = t2; }
void setNHitsReal(Int_t i)
{nHitsReal = i; }
Float_t getTime1Real()
{return time1Real;}
Float_t getTime2Real()
{return time2Real;}
Int_t getNHitsReal()
{return nHitsReal;}
void setTime1Noise(Float_t time)
{time1noise = time; }
void setTime2Noise(Float_t time)
{time2noise = time; }
Float_t getTime1Noise()
{return time1noise; }
Float_t getTime2Noise()
{return time2noise; }
void setFirstHit(Int_t hit1)
{firstHit = hit1; }
void setSecondHit(Int_t hit2)
{secondHit = hit2; }
void setFirstTime2(Float_t time2)
{firstTime2 = time2;}
void setEndList1(Int_t end)
{endList1 = end; }
Int_t getFirstHit()
{return firstHit; }
Int_t getSecondHit()
{return secondHit; }
Float_t getFirstTime2()
{return firstTime2; }
Int_t getEndList1()
handling drift cell informations
{return endList1; }
void setDTime1(Int_t i, Float_t time)
{dTime [i] = time; }
void setDTime2(Int_t i, Float_t time)
{dTime2 [i] = time; }
void setDTime1Err(Int_t i, Float_t timeErr)
{dTimeErr [i] = timeErr;}
void setDTime2Err(Int_t i, Float_t timeErr)
{dTime2Err [i] = timeErr;}
void setMinimumDist(Int_t i, Float_t dist)
{minimumdist [i] = dist; }
void setTrackN(Int_t i, Int_t number)
{track [i] = number; }
void setTof(Int_t i, Float_t tof)
{timeOfFlight [i] = tof; }
void setAngle(Int_t i, Float_t a)
{angle [i] = a; }
void setStatus(Int_t i, Int_t stat)
{statusflag [i] = stat; }
void setFractionOfmaxCharge(Int_t i, Float_t f)
{fractionOfmaxCharge[i] = f; }
void setCutEdge(Int_t i, Bool_t cut)
{cutEdge [i] = cut; }
void setWireOffset(Int_t i, Float_t off)
{wireOffset [i] = off; }
Float_t getDTime1(Int_t i)
{return dTime [i]; }
Float_t getDTime2(Int_t i)
{return dTime2 [i]; }
Float_t getDTime1Err(Int_t i)
{return dTimeErr [i]; }
Float_t getDTime2Err(Int_t i)
{return dTime2Err [i]; }
Float_t getMinimumDist(Int_t i)
{return minimumdist [i]; }
Int_t getTrackN(Int_t i)
{return track [i]; }
Float_t getTof(Int_t i)
{return timeOfFlight [i]; }
Float_t getAngle(Int_t i)
{return angle [i]; }
Int_t getStatus(Int_t i)
{return statusflag [i]; }
Float_t getFractionOfmaxCharge(Int_t i)
{return fractionOfmaxCharge[i]; }
Bool_t getCutEdge(Int_t i)
{return cutEdge [i]; }
Float_t getWireOffset(Int_t i)
{return wireOffset [i]; }
Float_t getCellEffLevel(Int_t i)
{return effLevel [i]; }
Float_t getNoiseLevel(Int_t i)
{return noiseLevel [i]; }
Float_t getOffset(Int_t i)
{return offsets [i]; }
Int_t getNoiseRangeHi(Int_t i)
{return noiseRangeHi [i]; }
Int_t getNoiseRangeLo(Int_t i)
{return noiseRangeLo [i]; }

Last change: Sat May 22 13:01:31 2010
Last generated: 2010-05-22 13:01

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.