ATLAS Offline Software
TileFilterResult.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //****************************************************************************
6 // Filename : TileFilterResult.cxx
7 // Authors : F. Merritt, A. Aurisano
8 // Created : March 2004
9 //
10 //****************************************************************************
12 #include <algorithm>
13 #include <iostream>
14 #include <iomanip>
15 #include "boost/io/ios_state.hpp"
16 
17 // Constructor
18 TileFilterResult::TileFilterResult(std::vector<float> &dig, double sig) {
19  m_debug = false;
20  int ND = dig.size();
21  CLHEP::HepVector digtem(ND);
22  m_digits = digtem;
23  for (int id = 0; id < ND; id++) {
24  m_digits[id] = dig[id];
25  }
26  //int nrow = digits.num_row();
27  //int nrowtem = digtem.num_row();
28  m_sigDigit = sig;
29  // Initialize some of the variables that will be set later.
30  m_nParam = 1;
31  m_nPileup = 0;
32  m_vCross.clear();
33  m_chi2 = 999.;
34  m_iFitIndex = -1;
35 }
36 //=============================================================================
38  return;
39 }
40 //=============================================================================
42  return m_sigDigit;
43 }
44 
45 //=============================================================================
46 CLHEP::HepVector& TileFilterResult::getDigRef() {
47  return m_digits;
48 }
49 //=============================================================================
50 std::vector<int>& TileFilterResult::getVcrossRef() {
51  return m_vCross;
52 }
53 //=============================================================================
55  return m_iFitIndex;
56 }
57 //=============================================================================
59  return m_nParam;
60 }
61 //=============================================================================
62 CLHEP::HepVector& TileFilterResult::getParamRef() {
63  return m_fitParam;
64 }
65 //=============================================================================
66 CLHEP::HepVector& TileFilterResult::getErrRef() {
67  return m_fitErr;
68 }
69 //=============================================================================
70 CLHEP::HepVector& TileFilterResult::getResidRef() {
71  return m_residuals;
72 }
73 //=============================================================================
75  return m_chi2;
76 }
77 //=============================================================================
79  boost::io::ios_base_all_saver coutsave(std::cout);
80  std::cout << " Print fitted param from TileFilterResult: Nparam=" << m_nParam << ", chisq=" << m_chi2 << std::endl;
81  for (int ipar = 0; ipar < m_nParam; ipar++) {
82  if (ipar == 0) {
83  std::cout << " i=" << ipar << ", kcr=P" << ", A=" << std::setw(5) << std::setprecision(2) << m_fitParam[ipar]
84  << " +-" << m_fitErr[ipar] << std::endl;
85  } else {
86  std::cout << " i=" << ipar << ", kcr=" << m_vCross[ipar - 1] << ", A=" << m_fitParam[ipar] << " +-"
87  << m_fitErr[ipar] << std::endl;
88  }
89  }
90  return;
91 }
92 //=============================================================================
93 double TileFilterResult::getInTime(double &amp, double &err, double &ped, double &chi2, double &t) {
94  amp = m_fitParam[1];
95  err = m_fitErr[1];
96  ped = m_fitParam[0];
97  chi2 = m_chi2;
98  t = 0.;
99 
100  return m_chi2;
101 }
102 //=============================================================================
103 void TileFilterResult::snapShot(int imode) {
104  boost::io::ios_base_all_saver coutsave(std::cout);
105  // This print a short snapshot of the FilterResult state.
106  std::cout << " SnapShot: imode=" << imode << ". Nparam=" << m_nParam << ", chisq=" << m_chi2 << ", iFitIndex"
107  << m_iFitIndex << ", Vcross=";
108  int Namp = m_nParam - 1;
109  for (int jamp = 0; jamp < Namp; jamp++) {
110  std::cout << " " << m_vCross[jamp];
111  }
112  std::cout << std::endl;
113  if (m_iFitIndex < 0) return;
114 
115  if (imode > 0) {
116  std::cout << " FitParam=";
117  for (int ipar = 0; ipar < m_nParam; ipar++) {
118  std::cout << std::setw(5) << std::setprecision(1) << m_fitParam[ipar] << "+-" << m_fitErr[ipar];
119  if (ipar < m_nParam - 1) std::cout << ", ";
120  }
121  std::cout << std::endl;
122  }
123  if (imode > 1) {
124  int Ndig = m_digits.num_row();
125  std::cout << " Residuals=";
126  for (int idig = 0; idig < Ndig; idig++) {
127  std::cout << " " << std::setw(4) << std::setprecision(3) << m_residuals[idig];
128  }
129  std::cout << std::endl;
130  }
131 }
132 //=============================================================================
133 int TileFilterResult::addCross(int kcrIndex) {
134 
135  int iret = -1;
136 
137  //Check that kcrIndex is not already in list.
138  bool ldup = false;
139  if (m_nParam > 1) {
140  int Namp = m_nParam - 1;
141  for (int icr = 0; icr < Namp; icr++) {
142  if (kcrIndex == m_vCross[icr]) {
143  ldup = true;
144  if (m_debug) {
145  std::cout << " TileFilterResult.addCross: kcrIndex=" << kcrIndex << " is already in crossing list: Kcross =";
146  for (int j = 0; j < Namp; j++) {
147  std::cout << " " << m_vCross[j];
148  }
149  std::cout << std::endl;
150  }
151  if (ldup) break;
152  }
153  } // end for loop
154  } // end "if(Nparam>1)"
155  if (ldup) {
156  iret = 1;
157  return iret;
158  }
159 
160  // Add the new crossing.
161  iret = 0;
162  m_vCross.push_back(kcrIndex);
163  std::sort(m_vCross.begin(), m_vCross.end());
164  m_nParam = m_nParam + 1;
165 
166  // Since we have a new Vcross configuration, iFitIndex is not yet defined for it.
167  m_iFitIndex = -1;
168 
169  if (m_debug) {
170  int Namp = m_nParam - 1;
171  std::cout << " TileFilterResult.addCross. Exit with Nparam=" << m_nParam << ", Vcross=";
172  for (int icr = 0; icr < Namp; icr++) {
173  std::cout << " " << std::setw(3) << m_vCross[icr];
174  }
175  std::cout << std::endl;
176  }
177 
178  return iret;
179 }
180 //=============================================================================
182  // Drop the crossing stored in amplitude # iamp.
183  int iret = -1;
184  int Namp = m_nParam - 1;
185  for (int iamp = 1; iamp < Namp; iamp++) {
186  if (m_vCross[iamp] == idrop) {
187  // Erase the crossing.
188  iret = 0;
189  m_vCross.erase(m_vCross.begin() + iamp);
190  // std::sort(Vcross.begin(), Vcross.end() );
191  m_nParam = m_nParam - 1;
192  }
193  }
194  if (iret != 0) {
195  std::cout << "error in TileFilterResult.dropCross: idrop=" << idrop << "but vcross =";
196  for (int iamp = 0; iamp < Namp; iamp++) {
197  std::cout << " " << m_vCross[iamp];
198  }
199  std::cout << std::endl;
200  return iret;
201  }
202 
203  // Since we have a new Vcross configuration, iFitIndex is not yet defined for it.
204  m_iFitIndex = -1;
205 
206  if (m_debug) {
207  int Namp = m_nParam - 1;
208  std::cout << " TileFilterResult.dropCross. Exit with Nparam=" << m_nParam << ", Vcross=";
209  for (int icr = 0; icr < Namp; icr++) {
210  std::cout << " " << std::setw(3) << m_vCross[icr];
211  }
212  std::cout << std::endl;
213  }
214 
215  return iret;
216 }
TileFilterResult::getChi2Ref
double & getChi2Ref()
Definition: TileFilterResult.cxx:74
TileFilterResult::m_chi2
double m_chi2
Definition: TileFilterResult.h:62
TileFilterResult::m_fitParam
CLHEP::HepVector m_fitParam
Definition: TileFilterResult.h:58
TileFilterResult::m_iFitIndex
int m_iFitIndex
Definition: TileFilterResult.h:55
TileFilterResult::getInTime
double getInTime(double &, double &, double &, double &, double &)
Definition: TileFilterResult.cxx:93
TileFilterResult::getResidRef
CLHEP::HepVector & getResidRef()
Definition: TileFilterResult.cxx:70
TileFilterResult::getParamRef
CLHEP::HepVector & getParamRef()
Definition: TileFilterResult.cxx:62
TileFilterResult::dropCross
int dropCross(int kcrIndex)
Definition: TileFilterResult.cxx:181
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TileFilterResult::m_sigDigit
double m_sigDigit
Definition: TileFilterResult.h:51
TileFilterResult::getErrRef
CLHEP::HepVector & getErrRef()
Definition: TileFilterResult.cxx:66
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:193
TileFilterResult::getNparRef
int & getNparRef()
Definition: TileFilterResult.cxx:58
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
python.BuildSignatureFlags.sig
sig
Definition: BuildSignatureFlags.py:215
TileFilterResult::getFitIndexRef
int & getFitIndexRef()
Definition: TileFilterResult.cxx:54
TileFilterResult::snapShot
void snapShot(int imode)
Definition: TileFilterResult.cxx:103
TileFilterResult::m_vCross
std::vector< int > m_vCross
Definition: TileFilterResult.h:56
TileFilterResult::TileFilterResult
TileFilterResult(std::vector< float > &dig, double sigma)
Definition: TileFilterResult.cxx:18
TileFilterResult::~TileFilterResult
~TileFilterResult()
Definition: TileFilterResult.cxx:37
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
TileFilterResult::m_fitErr
CLHEP::HepVector m_fitErr
Definition: TileFilterResult.h:59
TileFilterResult.h
TileFilterResult::addCross
int addCross(int kcrIndex)
Definition: TileFilterResult.cxx:133
TileFilterResult::m_residuals
CLHEP::HepVector m_residuals
Definition: TileFilterResult.h:61
Example_ReadSampleNoise.ped
ped
Definition: Example_ReadSampleNoise.py:45
TileFilterResult::m_nPileup
int m_nPileup
Definition: TileFilterResult.h:54
TileFilterResult::getDigRef
CLHEP::HepVector & getDigRef()
Definition: TileFilterResult.cxx:46
TileFilterResult::m_nParam
int m_nParam
Definition: TileFilterResult.h:53
TileFilterResult::m_debug
bool m_debug
Definition: TileFilterResult.h:48
TileFilterResult::m_digits
CLHEP::HepVector m_digits
Definition: TileFilterResult.h:50
TileFilterResult::getVcrossRef
std::vector< int > & getVcrossRef()
Definition: TileFilterResult.cxx:50
TileFilterResult::getSigDig
double getSigDig() const
Definition: TileFilterResult.cxx:41
TileFilterResult::printFitParam
void printFitParam()
Definition: TileFilterResult.cxx:78