ROOT logo
#ifndef HMDCCAL1SIM_H
#define HMDCCAL1SIM_H

#include "hmdccal1.h"

class HMdcCal1Sim : public HMdcCal1 {
protected:
  Int_t nTrack1;       // number of Track for first hit
  Int_t nTrack2;       // number of Track for second hit
  Int_t status1;       // status of cell (positive if ok, negative if it should not be used)
  Int_t status2;       // status of cell (positive if ok, negative if it should not be used)
  Int_t listTrack [5]; // list of 5 tracknumbers (GEANT) for tracks
  Int_t listStatus[5]; // list of status for 5 tracks
  Float_t angle1;      // impact angle1 in cell system 0-90 [degree]
  Float_t angle2;      // impact angle2 in cell system 0-90 [degree]
  Float_t minDist1;    // minimum distance to sense wire for track1 [mm]
  Float_t minDist2;    // minimum distance to sense wire for track2 [mm]
  Float_t error1;      // error of time1 [ns]
  Float_t error2;      // error of time2 [ns]
  Float_t tof1;        // tof of track1  [ns]
  Float_t tof2;        // tof of track2  [ns]
  Float_t wireOff1;    // signal time on the wire of track1 [ns]
  Float_t wireOff2;    // signal time on the wire of track2 [ns]

public:
    HMdcCal1Sim(void) : nTrack1(-99),nTrack2(-99),status1(0),status2(0)
	                ,angle1(-99),angle2(-99),minDist1(-99),minDist2(-99)
	                ,error1(-99),error2(-99),tof1(-999),tof2(-999)
	                ,wireOff1(-99),wireOff2(-99) {}
  ~HMdcCal1Sim(void) {}
  void clear(void);
  void setNTrack1  (const Int_t n) {nTrack1=n;}
  void setNTrack2  (const Int_t n) {nTrack2=n;}
  void setStatus1  (const Int_t f) {status1=f;}
  void setStatus2  (const Int_t f) {status2=f;}
  void setAngle1   (const Float_t f) {angle1=f;}
  void setAngle2   (const Float_t f) {angle2=f;}
  void setMinDist1 (const Float_t f) {minDist1=f;}
  void setMinDist2 (const Float_t f) {minDist2=f;}
  void setError1   (const Float_t f) {error1=f;}
  void setError2   (const Float_t f) {error2=f;}
  void setTof1     (const Float_t f) {tof1=f;}
  void setTof2     (const Float_t f) {tof2=f;}
  void setWireOffset1 (const Float_t f) {wireOff1=f;}
  void setWireOffset2 (const Float_t f) {wireOff2=f;}
  void resetTrackList(Int_t track=-99){  for(Int_t i=0;i<5;i++)listTrack[i]=track;}
  void setTrackList(Int_t i,Int_t track) {listTrack[i]=track;}
  void setTrackList(Int_t* array)
  {
   for(Int_t i=0;i<5;i++)
     {
	 if(array[i]!=0 && array[i]>=0)
	 {
	     listTrack[i]=array[i];
	 }
	 else
	 {
	     listTrack[i]=-99;
	 }
     }
  };
  void getTrackList(Int_t* array)
  {
   for(Int_t i=0;i<5;i++)
     {
	 array[i]=listTrack[i];
     }
  };
  void resetStatusList(Int_t stat=0){  for(Int_t i=0;i<5;i++)listStatus[i]=stat;}
  void setStatusList(Int_t i,Int_t stat) {listStatus[i]=stat;}
  void setStatusList(Int_t* array)
  {
   for(Int_t i=0;i<5;i++)
     {
	 listStatus[i]=array[i];
     }
  };
  void getStatusList(Int_t* array)
  {
   for(Int_t i=0;i<5;i++)
     {
	 array[i]=listStatus[i];
     }
  };
  Int_t getNTracks()
  {
      Int_t i=0;
      while(listTrack[i]!=-99 && i<5)
      {
	  i++;
      }
      return i;
  };
  Int_t* getStatusList(){return (Int_t*)listStatus;}
  Int_t* getTrackList() {return (Int_t*)listTrack;}
  Int_t getTrackFromList (Int_t element){return listTrack [element];}
  Int_t getStatusFromList(Int_t element){return listStatus[element];}
  Int_t getNTrack1 (void) const {return nTrack1;}
  Int_t getNTrack2 (void) const {return nTrack2;}
  Int_t getStatus1 (void) const { return status1; }
  Int_t getStatus2 (void) const { return status2; }
  Int_t getStatus  (void) const { return status1; }  // will be removed later
  Float_t getAngle1(void) const { return angle1; }
  Float_t getAngle2(void) const { return angle2; }
  Float_t getMinDist1(void) const { return minDist1; }
  Float_t getMinDist2(void) const { return minDist2; }
  Float_t getError1  (void) const { return error1; }
  Float_t getError2  (void) const { return error2; }
  Float_t getTof1    (void) const { return tof1; }
  Float_t getTof2    (void) const { return tof2; }
  Float_t getWireOffset1(void) const { return wireOff1; }
  Float_t getWireOffset2(void) const { return wireOff2; }

  ClassDef(HMdcCal1Sim,1) // simulated cal1 hit on a MDC
};

#endif  /* HMDCCAL1SIM_H */

 hmdccal1sim.h:1
 hmdccal1sim.h:2
 hmdccal1sim.h:3
 hmdccal1sim.h:4
 hmdccal1sim.h:5
 hmdccal1sim.h:6
 hmdccal1sim.h:7
 hmdccal1sim.h:8
 hmdccal1sim.h:9
 hmdccal1sim.h:10
 hmdccal1sim.h:11
 hmdccal1sim.h:12
 hmdccal1sim.h:13
 hmdccal1sim.h:14
 hmdccal1sim.h:15
 hmdccal1sim.h:16
 hmdccal1sim.h:17
 hmdccal1sim.h:18
 hmdccal1sim.h:19
 hmdccal1sim.h:20
 hmdccal1sim.h:21
 hmdccal1sim.h:22
 hmdccal1sim.h:23
 hmdccal1sim.h:24
 hmdccal1sim.h:25
 hmdccal1sim.h:26
 hmdccal1sim.h:27
 hmdccal1sim.h:28
 hmdccal1sim.h:29
 hmdccal1sim.h:30
 hmdccal1sim.h:31
 hmdccal1sim.h:32
 hmdccal1sim.h:33
 hmdccal1sim.h:34
 hmdccal1sim.h:35
 hmdccal1sim.h:36
 hmdccal1sim.h:37
 hmdccal1sim.h:38
 hmdccal1sim.h:39
 hmdccal1sim.h:40
 hmdccal1sim.h:41
 hmdccal1sim.h:42
 hmdccal1sim.h:43
 hmdccal1sim.h:44
 hmdccal1sim.h:45
 hmdccal1sim.h:46
 hmdccal1sim.h:47
 hmdccal1sim.h:48
 hmdccal1sim.h:49
 hmdccal1sim.h:50
 hmdccal1sim.h:51
 hmdccal1sim.h:52
 hmdccal1sim.h:53
 hmdccal1sim.h:54
 hmdccal1sim.h:55
 hmdccal1sim.h:56
 hmdccal1sim.h:57
 hmdccal1sim.h:58
 hmdccal1sim.h:59
 hmdccal1sim.h:60
 hmdccal1sim.h:61
 hmdccal1sim.h:62
 hmdccal1sim.h:63
 hmdccal1sim.h:64
 hmdccal1sim.h:65
 hmdccal1sim.h:66
 hmdccal1sim.h:67
 hmdccal1sim.h:68
 hmdccal1sim.h:69
 hmdccal1sim.h:70
 hmdccal1sim.h:71
 hmdccal1sim.h:72
 hmdccal1sim.h:73
 hmdccal1sim.h:74
 hmdccal1sim.h:75
 hmdccal1sim.h:76
 hmdccal1sim.h:77
 hmdccal1sim.h:78
 hmdccal1sim.h:79
 hmdccal1sim.h:80
 hmdccal1sim.h:81
 hmdccal1sim.h:82
 hmdccal1sim.h:83
 hmdccal1sim.h:84
 hmdccal1sim.h:85
 hmdccal1sim.h:86
 hmdccal1sim.h:87
 hmdccal1sim.h:88
 hmdccal1sim.h:89
 hmdccal1sim.h:90
 hmdccal1sim.h:91
 hmdccal1sim.h:92
 hmdccal1sim.h:93
 hmdccal1sim.h:94
 hmdccal1sim.h:95
 hmdccal1sim.h:96
 hmdccal1sim.h:97
 hmdccal1sim.h:98
 hmdccal1sim.h:99
 hmdccal1sim.h:100
 hmdccal1sim.h:101
 hmdccal1sim.h:102
 hmdccal1sim.h:103
 hmdccal1sim.h:104
 hmdccal1sim.h:105
 hmdccal1sim.h:106
 hmdccal1sim.h:107
 hmdccal1sim.h:108
 hmdccal1sim.h:109
 hmdccal1sim.h:110
 hmdccal1sim.h:111
 hmdccal1sim.h:112
 hmdccal1sim.h:113
 hmdccal1sim.h:114
 hmdccal1sim.h:115
 hmdccal1sim.h:116
 hmdccal1sim.h:117
 hmdccal1sim.h:118