ROOT logo
#ifndef MAPS_DIGPARTICLE_H
#define MAPS_DIGPARTICLE_H

#include <TNamed.h>
#include <TList.h>
#include <TGraph.h>
#include "Riostream.h"
#include "vector"

// ROOT classes
#include "TString.h"
#include "TObject.h"
#include "TVector.h"
#include "TFile.h"
#include "TSystem.h"
#include "TRandom.h"
#include "TH1.h"
#include "TH2.h"
#include "TObjArray.h"
#include "TTree.h"
#include "TBranch.h"
#include "TClonesArray.h"
using namespace std;
extern Int_t GlobalSeed ;

class DIGInitialize;
class DIGPlane;
class DIGADC;
class DIGBeam;
class DIGTransport;
class DIGParticle;
class DIGAction;
class DIGEvent;
class DIGMAPS;

//==============================================================================
class DIGParticle : public TObject {
 public:
  DIGParticle();
  DIGParticle(Float_t EntryX, Float_t EntryY, Float_t EntryZ,
	      Float_t ExitX, Float_t ExitY, Float_t ExitZ, Float_t Energy_deposited);
  DIGParticle(DIGParticle& adigparticle);
  virtual ~DIGParticle();
  void    Clear(const Option_t * /*option*/ = "");
  Float_t GetEntryX(){return fEntryX;}
  Float_t GetEntryY(){return fEntryY;}
  Float_t GetEntryZ(){return fEntryZ;}
  Float_t GetExitX(){return fExitX;}
  Float_t GetExitY(){return fExitY;}
  Float_t GetExitZ(){return fExitZ;}
  Float_t GetEnergy_deposited(){return fEnergy_deposited;}
  Float_t GetTotalAnalogCharge();
  Int_t GetTotalDigitalCharge();

  Int_t GetNSegment(){return fNSegment;}
  std::vector<Float_t> GetSegmentX(){return fSegmentX;}
  std::vector<Float_t> GetSegmentY(){return fSegmentY;}
  std::vector<Float_t> GetSegmentZ(){return fSegmentZ;}
  std::vector<Float_t> GetSegmentCharge(){return fSegmentCharge;}
  Int_t GetNpixels(){return fNpixels;}
  std::vector<Int_t> GetPixelMap(){return fPixelMap;}
  std::vector<Float_t> GetAnalogCharge(){return fAnalogChargeMap;}
  std::vector<Int_t> GetDigitalCharge(){return fDigitalChargeMap;}

  void SetNSegment(Int_t NSegment){fNSegment=NSegment;}  
  void SetEntryX(Float_t EntryX){fEntryX=EntryX;}
  void SetEntryY(Float_t EntryY){fEntryY=EntryY;}
  void SetEntryZ(Float_t EntryZ){fEntryY=EntryZ;}
  void SetExitX(Float_t ExitX){fExitX=ExitX;}
  void SetExitY(Float_t ExitY){fExitY=ExitY;}
  void SetExitZ(Float_t ExitZ){fExitZ=ExitZ;}
  void SetEnergy_deposited(Float_t Energy_deposited){fEnergy_deposited=Energy_deposited;}
  void SetNpixels(Int_t Npixels){fNpixels= Npixels;}

  void ComputeChargeDeposition(Float_t StartingSegmentSize, Float_t MaximumSegmentSize, Float_t MaximumChargePerSegment);
  void ComputeChargeTransport(DIGPlane *aDIGPlane,DIGTransport *aDIGTransport);
  void PrintInfo();

  void AddPixel(Float_t AnalogCharge, Int_t PixelNumber);
  void UpdatePixel(Float_t AnalogCharge, Int_t PixelNumber);
  void AddRandomNoise(DIGPlane *myDIGPlane);
  void AnalogToDigitalconversion(DIGADC *myDIGADC, DIGPlane *myDIGPlane);
  Int_t GetPixelNumber(DIGPlane *myDIGPlane, Float_t Xpos, Float_t Ypos);
  void GetXYPixelNumber(Int_t &Xpix, Int_t &Ypix, DIGPlane *myDIGPlane, Int_t PixelNumber);
  void GetXYPixelCenter(Float_t &Xpix, Float_t &Ypix, DIGPlane *myDIGPlane, Int_t PixelNumber);

  Double_t         GaussianLaw(Double_t mean, Double_t sigma); 
  //  Double_t         Lorentz2D(Double_t *x, Double_t *par);

 protected:
 
  Float_t fEntryX;
  Float_t fEntryY;
  Float_t fEntryZ;
  Float_t fExitX;
  Float_t fExitY;
  Float_t fExitZ;
  Float_t fEnergy_deposited;
  //  Float_t fPx;
  //  Float_t fPy;
  //  Float_t fPz;

  //segments
  Int_t fNSegment;
  vector<Float_t> fSegmentX;
  vector<Float_t> fSegmentY;
  vector<Float_t> fSegmentZ;
  vector<Float_t> fSegmentCharge;
  //pixel with deposited charge list 
  Int_t fNpixels;
  vector< Int_t > fPixelMap;
  vector< Float_t > fAnalogChargeMap;
  vector< Int_t > fDigitalChargeMap; // n'a pas de sens tant qu'on a pas somme la charge de toutes les particules
  // au niveau du read out.


  ClassDef(DIGParticle,1);
};



//==============================================================================

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