CMS 3D CMS Logo

FittedEntriesSet.cc
Go to the documentation of this file.
1 // COCOA class implementation file
2 //Id: FittedEntriesSet.cc
3 //CAT: Model
4 //
5 // History: v1.0
6 // Pedro Arce
7 
8 #include <fstream>
9 #include <map>
15 
16 #ifdef MAT_MESCHACH
18 #endif
19 //
20 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
22  //- theTime = Model::MeasurementsTime();
25 
27  theEntriesErrorMatrix = AtWAMatrix;
28 
29  Fill();
30 }
31 
32 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
33 FittedEntriesSet::FittedEntriesSet(const std::vector<ALIstring>& wl) {
34  //- theTime = Model::MeasurementsTime();
35  theDate = wl[0];
36  theTime = "99:99";
37 
40 
42 }
43 
44 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
45 FittedEntriesSet::FittedEntriesSet(const std::vector<FittedEntriesSet*>& vSets) {
46  theDate = "99/99/99";
47  theTime = "99:99";
48 
51 
53 }
54 
55 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
57  FillEntries();
59 }
60 
61 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
63  //---------- Store Fitted Entries
64  //----- Iterate over entry list
65  std::vector<Entry*>::const_iterator vecite;
66  for (vecite = Model::EntryList().begin(); vecite != Model::EntryList().end(); ++vecite) {
67  //--- Only for good quality parameters (='unk')
68  if ((*vecite)->quality() >= theMinEntryQuality) {
69  // ALIdouble dimv = (*vecite)->ValueDimensionFactor();
70  // ALIdouble dims = (*vecite)->SigmaDimensionFactor();
71  ALIint ipos = (*vecite)->fitPos();
72  FittedEntry* fe = new FittedEntry((*vecite), ipos, sqrt(theEntriesErrorMatrix->Mat()->me[ipos][ipos]));
73  //- std::cout << fe << "IN fit FE " << fe->theValue<< " " << fe->Sigma()<< " " << sqrt(theEntriesErrorMatrix->Mat()->me[NoEnt][NoEnt]) / dims<< std::endl;
74  theFittedEntries.push_back(fe);
75  }
76  }
77 }
78 
79 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
81  //------ Count the number of entries that will be in the set
82  ALIuint nent = 0;
83  std::vector<Entry*>::const_iterator vecite;
84  for (vecite = Model::EntryList().begin(); vecite != Model::EntryList().end(); ++vecite) {
85  if ((*vecite)->quality() > theMinEntryQuality) {
86  nent++;
87  }
88  }
89 
91  //---------- Store correlations
92  ALIuint ii;
93  for (ii = 0; ii < nent; ii++) {
94  for (ALIuint jj = ii + 1; jj < nent; jj++) {
96  if (corr != 0) {
97  corr /= (sqrt(theEntriesErrorMatrix->Mat()->me[ii][ii]) / sqrt(theEntriesErrorMatrix->Mat()->me[jj][jj]));
99  }
100  }
101  }
102 }
103 
104 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
106  std::vector<ALIdouble> vd(nent, 0.);
107  std::vector<std::vector<ALIdouble> > vvd(nent, vd);
109 }
110 
111 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
112 void FittedEntriesSet::FillEntriesFromFile(const std::vector<ALIstring>& wl) {
113  ALIuint siz = wl.size();
114  for (ALIuint ii = 1; ii < siz; ii += 3) {
115  FittedEntry* fe = new FittedEntry(wl[ii], ALIUtils::getFloat(wl[ii + 1]), ALIUtils::getFloat(wl[ii + 2]));
116  theFittedEntries.push_back(fe);
117  }
118 }
119 
120 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
121 void FittedEntriesSet::FillEntriesAveragingSets(const std::vector<FittedEntriesSet*>& vSets) {
122  std::vector<FittedEntry*> vFEntry;
123  ALIuint nEntry = vSets[0]->FittedEntries().size();
124  // ALIuint setssiz = vSets.size();
125  for (ALIuint ii = 0; ii < nEntry; ii++) { // loop to FittedEntry's
126  if (ALIUtils::debug >= 5)
127  std::cout << "FillEntriesAveragingSets entry " << ii << std::endl;
128  vFEntry.clear();
129  for (ALIuint jj = 0; jj < vSets.size(); jj++) { // look for FittedEntry ii in each Sets
130  if (ALIUtils::debug >= 5)
131  std::cout << "FillEntriesAveragingSets set " << jj << std::endl;
132  //----- Check all have the same number of entries
133  if (vSets[jj]->FittedEntries().size() != nEntry) {
134  std::cerr << "!!! FATAL ERROR FittedEntriesSet::FillEntriesAveragingSets set number " << jj
135  << " has different number of entries = " << vSets[jj]->FittedEntries().size()
136  << " than first set = " << nEntry << std::endl;
137  exit(1);
138  }
139 
140  vFEntry.push_back(vSets[jj]->FittedEntries()[ii]);
141  }
142  FittedEntry* fe = new FittedEntry(vFEntry);
143  if (ALIUtils::debug >= 5)
144  std::cout << "FillEntriesAveragingSets new fentry " << fe->getValue() << " " << fe->getSigma() << std::endl;
145  theFittedEntries.push_back(fe);
146  }
147 }
148 
149 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2
151  if (ALIUtils::debug >= 5)
152  std::cout << " FittedEntriesSet::SetOptOEntries " << theFittedEntries.size() << std::endl;
153 
154  std::vector<FittedEntry*>::const_iterator ite;
155  for (ite = theFittedEntries.begin(); ite != theFittedEntries.end(); ++ite) {
156  FittedEntry* fe = (*ite);
159  entry->setValue(fe->getValue());
160  entry->setSigma(fe->getSigma());
161 
162  if (ALIUtils::debug >= 5)
163  std::cout << " FittedEntriesSet::SetOptOEntries() " << opto->name() << " " << entry->name() << std::endl;
164  opto->setGlobalCoordinates();
165  opto->setOriginalEntryValues();
166  }
167 }
long double ALIdouble
Definition: CocoaGlobals.h:11
std::vector< FittedEntry * > & FittedEntries()
Definition: Entry.h:18
static ALIstring getCurrentTime()
Definition: Measurement.h:123
ALIstring getOptOName() const
Definition: FittedEntry.h:28
int ALIint
Definition: CocoaGlobals.h:15
static OpticalObject * getOptOByName(const ALIstring &opto_name)
--— Find an OptO name in theOptOList and return a pointer to it
Definition: Model.cc:570
void setValue(ALIdouble val)
Definition: Entry.h:78
static ALIint debug
Definition: ALIUtils.h:34
static ALIstring getCurrentDate()
Definition: Measurement.h:122
std::vector< FittedEntry * > theFittedEntries
static Entry * getEntryByName(const ALIstring &opto_name, const ALIstring &entry_name)
--— Search an Entry name in the Entry* list and return a pointer to it
Definition: Model.cc:623
std::vector< std::vector< DeviationSensor2D * > > vvd
void setOriginalEntryValues()
static double getFloat(const ALIstring &str)
Convert a string to an float, checking that it is really a number.
Definition: ALIUtils.cc:373
T sqrt(T t)
Definition: SSEVec.h:19
FittedEntriesSet(MatrixMeschach *AtWAMatrix)
ALIdouble getSigma() const
Definition: FittedEntry.h:32
std::vector< std::vector< ALIdouble > > theCorrelationMatrix
const MAT * Mat() const
MatrixMeschach * theEntriesErrorMatrix
ALIstring getEntryName() const
Definition: FittedEntry.h:29
std::vector< DeviationSensor2D * > vd
JetCorrectorParameters corr
Definition: classes.h:5
ii
Definition: cuy.py:590
void FillEntriesAveragingSets(const std::vector< FittedEntriesSet * > &vSets)
void CreateCorrelationMatrix(const ALIuint nent)
#define begin
Definition: vmac.h:32
const ALIstring & name() const
Definition: OpticalObject.h:58
ALIdouble getValue() const
Definition: FittedEntry.h:31
static std::vector< Entry * > & EntryList()
Definition: Model.h:86
void setGlobalCoordinates()
unsigned int ALIuint
Definition: CocoaGlobals.h:17
void FillEntriesFromFile(const std::vector< ALIstring > &wl)
def exit(msg="")