CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TMom.cc
Go to the documentation of this file.
1 /*
2  * \class TMom
3  *
4  * $Date: 2013/04/19 22:19:23 $
5  * \author: Julie Malcles - CEA/Saclay
6  */
7 
10 #include <TMath.h>
11 
12 #include <cassert>
13 
14 using namespace std;
15 
16 //ClassImp(TMom)
17 
18 
19 // Default Constructor...
21 {
22  init(0.0,10.0e9);
23 }
24 
25 // Constructor...
26 TMom::TMom(double cutlow, double cuthigh)
27 {
28  init(cutlow,cuthigh);
29 }
30 TMom::TMom(const std::vector<double>& cutlow, const std::vector<double>& cuthigh)
31 {
32  init(cutlow,cuthigh);
33 }
34 
35 // Destructor
37 {
38 }
39 
40 void TMom::init(double cutlow, double cuthigh)
41 {
42 
43  nevt=0;
44  mean=0;
45  mean2=0;
46  mean3=0;
47  sum=0;
48  sum2=0;
49  sum3=0;
50  rms=0;
51  M3=0;
52  peak=0;
53  min=10.0e9;
54  max=0.;
55  _cutLow.clear();
56  _cutHigh.clear();
57  _dimCut=1;
58  _cutLow.push_back(cutlow);
59  _cutHigh.push_back(cuthigh);
60  for(int i=0;i<101;i++){
61  bing[i]=0;
62  }
63 
64 }
65 void TMom::init(const std::vector<double>& cutlow, const std::vector<double>& cuthigh)
66 {
67 
68  nevt=0;
69  mean=0;
70  mean2=0;
71  mean3=0;
72  sum=0;
73  sum2=0;
74  sum3=0;
75  rms=0;
76  M3=0;
77  peak=0;
78  min=10.0e9;
79  max=0.;
80  assert(cutlow.size()==cuthigh.size());
81  _cutLow.clear();
82  _cutHigh.clear();
83  _dimCut=cutlow.size();
84  _cutLow=cutlow;
85  _cutHigh=cuthigh;
86  for(int i=0;i<101;i++){
87  bing[i]=0;
88  }
89 
90 }
91 void TMom::setCut(double cutlow, double cuthigh){
92 
93  _cutLow.clear();
94  _cutHigh.clear();
95  _dimCut=1;
96  _cutLow.push_back(cutlow);
97  _cutHigh.push_back(cuthigh);
98 
99 }
100 void TMom::setCut(const std::vector<double>& cutlow ,const std::vector<double>& cuthigh){
101 
102  assert(cutlow.size( )== cuthigh.size());
103  _cutLow.clear();
104  _cutHigh.clear();
105  _dimCut=cutlow.size();
106  _cutLow=cutlow;
107  _cutHigh=cuthigh;
108 
109 }
110 
111 void TMom::addEntry(double val)
112 {
113  std::vector<double> dumb;
114  dumb.push_back(val);
115  addEntry(val,dumb);
116 }
117 
118 void TMom::addEntry(double val, const std::vector<double>& valcut)
119 {
120 
121  int passingAllCuts=1;
122 
123  for (int iCut=0;iCut<_dimCut;iCut++){
124  int passing;
125  if( valcut.at(iCut)>_cutLow.at(iCut) && valcut.at(iCut) <=_cutHigh.at(iCut) ){
126  passing=1;
127  }else passing=0;
128  passingAllCuts*=passing;
129  }
130 
131  if( passingAllCuts == 1 ){
132 
133  nevt+=1;
134  sum+=val;
135  sum2+=val*val;
136  sum3+=val*val*val;
137  if(val>max) max=val;
138  if(val<min) min=val;
139 
140  // for peak stuff
141  _ampl.push_back(val);
142  }
143 
144 }
145 
146 
147 
148 double TMom::getMean(){
149  if(nevt!=0) mean=sum/nevt;
150  else mean=0.0;
151  return mean;
152 }
153 
154 double TMom::getMean2(){
155  if(nevt!=0) mean2=sum2/nevt;
156  else mean2=0.0;
157  return mean2;
158 }
159 double TMom::getMean3(){
160  if(nevt!=0) mean3=sum3/nevt;
161  else mean3=0.0;
162  return mean3;
163 }
164 
165 int TMom::getNevt(){ return nevt;}
166 
167 double TMom::getRMS(){
168  double m=getMean();
169  double m2=getMean2();
170  if(nevt!=0) rms=TMath::Sqrt( m2 - m*m );
171  else rms=0.0;
172  return rms;
173 }
174 
175 double TMom::getM3(){
176 
177  double m=getMean();
178  double m2=getMean2();
179  double m3=getMean3();
180  double sig = getRMS();
181 
182  if(nevt!=0 && sig!=0) M3=( m3 - 3.0*m*(m2-m*m) - m*m*m )/(sig*sig*sig);
183  else M3=0.0;
184  return M3;
185 }
186 
187 double TMom::getMin(){return min;}
188 double TMom::getMax(){return max;}
189 
190 std::vector<double> TMom::getPeak(){
191 
192  std::vector<double> p;
193  double wbin=(max-min)/100.;
194  int bung;
195 
196  for(unsigned int i=0;i<_ampl.size();i++){
197  if(wbin <= 0.0)
198  bung=1;
199  else
200  bung= (int) ((_ampl.at(i)-min)/wbin)+1;
201  if(1 <= bung && bung <= 100)
202  bing[bung]++;
203  }
204 
205  TMarkov *peakM = new TMarkov();
206 
207  int popmax=0;
208 
209  for(int k=1;k<101;k++) {
210  if(bing[k] > popmax) {
211  popmax=bing[k];
212  }
213  }
214 
215  peakM -> peakFinder(&bing[0]);
216  p.push_back(peakM -> getPeakValue(0));
217  p.push_back(peakM -> getPeakValue(1));
218 
219  return p;
220 }
221 
void addEntry(double val)
Definition: TMom.cc:111
int i
Definition: DBlmapReader.cc:9
void setCut(double, double)
Definition: TMom.cc:91
int init
Definition: HydjetWrapper.h:63
TMom()
Definition: TMom.cc:20
virtual ~TMom()
Definition: TMom.cc:36
#define min(a, b)
Definition: mlp_lapack.h:161
double getM3()
Definition: TMom.cc:175
int getNevt()
Definition: TMom.cc:165
void init(double, double)
Definition: TMom.cc:40
const T & max(const T &a, const T &b)
double getMean2()
Definition: TMom.cc:154
Definition: TMarkov.h:6
int k[5][pyjets_maxn]
double getRMS()
Definition: TMom.cc:167
double getMin()
Definition: TMom.cc:187
double getMean3()
Definition: TMom.cc:159
double getMax()
Definition: TMom.cc:188
std::vector< double > getPeak()
Definition: TMom.cc:190
double getMean()
Definition: TMom.cc:148