CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TPNPulse.cc
Go to the documentation of this file.
1 /*
2  * \class TPNPulse
3  *
4  * $Date: 2009/06/02 12:55:21 $
5  * \author: Julie Malcles - CEA/Saclay
6  */
7 
9 
10 #include <TMath.h>
11 #include <iostream>
12 #include <cassert>
13 using namespace std;
14 
15 //ClassImp(TPNPulse)
16 
17 
18 // Default Constructor...
20 {
21  init(50,6);
22 }
23 
24 // Constructor...
25 TPNPulse::TPNPulse( int nsamples, int presample )
26 {
27  init( nsamples, presample);
28 }
29 
30 // Destructor
32 {
33 }
34 
35 void TPNPulse::init(int nsamples, int presample )
36 {
37  _nsamples=50;
38  assert(nsamples==_nsamples);
39  assert(presample!=0);
40  adc_ = new double[50];
41 
42  _presample=presample;
43 
44  for(int i=0;i<_nsamples;i++){
45  adc_[i]=0.0;
46  }
47 
48  adcMax_=0;
49  iadcMax_=0;
50  pedestal_=0;
51 
52  isMaxFound_=false;
53  isPedCalc_=false;
54 }
55 
56 bool TPNPulse::setPulse(double *adc){
57 
58  bool done=false;
59  adc_=adc;
60  done=true;
61  isMaxFound_=false;
62  isPedCalc_=false;
63  return done;
64 }
66 
67  if(isMaxFound_) return adcMax_;
68 
69  int iadcmax=0;
70  double adcmax=0.0;
71  for(int i=0;i<_nsamples;i++){
72  if(adc_[i]>adcmax){
73  iadcmax=i;
74  adcmax=adc_[i];
75  }
76  }
77  iadcMax_=iadcmax;
78  adcMax_=adcmax;
79  return adcMax_;
80 }
81 
83  if(!isMaxFound_) getMax();
84  return iadcMax_;
85 
86 }
87 
89  if(isPedCalc_) return pedestal_;
90  double ped=0;
91  for(int i=0;i<_presample;i++){
92  ped+=adc_[i];
93  }
94  ped/=double(_presample);
95  pedestal_=ped;
96  isPedCalc_=true;
97  return pedestal_;
98 }
99 
101 
102  double ped;
103  if(!isPedCalc_) ped=getPedestal();
104  else ped=pedestal_;
105 
106  double *adcNoPed= new double[50];
107  for (int i=0;i<_nsamples;i++){
108  adcNoPed[i]=adc_[i]-ped;
109  }
110  return adcNoPed;
111 }
112 
113 void TPNPulse::setPresamples(int presample){
114  isPedCalc_=false;
115  _presample=presample;
116 }
int adc(sample_type sample)
get the ADC sample (12 bits)
int i
Definition: DBlmapReader.cc:9
double getPedestal()
Definition: TPNPulse.cc:88
void init(int, int)
Definition: TPNPulse.cc:35
double getMax()
Definition: TPNPulse.cc:65
int init
Definition: HydjetWrapper.h:63
virtual ~TPNPulse()
Definition: TPNPulse.cc:31
double * getAdcWithoutPedestal()
Definition: TPNPulse.cc:100
bool setPulse(double *)
Definition: TPNPulse.cc:56
TPNPulse()
Definition: TPNPulse.cc:19
void setPresamples(int)
Definition: TPNPulse.cc:113
int getMaxSample()
Definition: TPNPulse.cc:82