70 , fTargetSelection(kMean)
97 , fTargetSelection(ts)
106 , fTargetSelection(from.fTargetSelection)
108 Log() << kFATAL <<
"COPY CONSTRUCTOR NOT IMPLEMENTED" <<
Endl;
131 std::map<Int_t, Float_t> txvec;
132 for (std::map<Int_t, Float_t>::const_iterator it = xvec.begin();
133 it != xvec.end(); ++it) {
134 Float_t coordinate = it->second;
135 Int_t dim = it->first;
138 if (coordinate <= fXmin[dim])
139 coordinate = fXmin[dim] + std::numeric_limits<float>::epsilon();
140 else if (coordinate >= fXmax[dim])
141 coordinate = fXmax[dim] - std::numeric_limits<float>::epsilon();
143 txvec.insert(std::pair<Int_t, Float_t>(dim, VarTransform(dim, coordinate)));
147 std::map<Int_t, Float_t>
target;
150 std::vector<PDEFoamCell*> cells = FindCells(txvec);
154 return std::vector<Float_t>(GetTotDim() - xvec.size(), 0);
158 for (
Int_t idim = 0; idim < GetTotDim(); ++idim) {
160 if (txvec.find(idim) == txvec.end())
161 target.insert(std::pair<Int_t, Float_t>(idim, 0));
164 switch (fTargetSelection) {
166 CalculateMean(
target, cells);
169 CalculateMpv(
target, cells);
172 Log() <<
"<PDEFoamMultiTarget::GetCellValue>: "
173 <<
"unknown target selection type!" <<
Endl;
178 std::vector<Float_t>
result;
180 for (std::map<Int_t, Float_t>::const_iterator it =
target.begin();
182 result.push_back(it->second);
207 for (std::vector<PDEFoamCell*>::const_iterator cell_it = cells.begin();
208 cell_it != cells.end(); ++cell_it) {
211 const Double_t cell_density = GetCellValue(*cell_it, kValueDensity);
214 if (cell_density > max_dens) {
216 PDEFoamVect cellPosi(GetTotDim()), cellSize(GetTotDim());
217 (*cell_it)->GetHcub(cellPosi, cellSize);
220 max_dens = cell_density;
223 for (std::map<Int_t, Float_t>::iterator target_it =
target.begin();
224 target_it !=
target.end(); ++target_it) {
225 const Int_t dim = target_it->first;
227 VarTransformInvers(dim, cellPosi[dim] + 0.5 * cellSize[dim]);
251 std::map<Int_t, Float_t> norm;
254 for (std::vector<PDEFoamCell*>::const_iterator cell_it = cells.begin();
255 cell_it != cells.end(); ++cell_it) {
258 const Double_t cell_density = GetCellValue(*cell_it, kValueDensity);
261 PDEFoamVect cellPosi(GetTotDim()), cellSize(GetTotDim());
262 (*cell_it)->GetHcub(cellPosi, cellSize);
265 for (std::map<Int_t, Float_t>::iterator target_it =
target.begin();
266 target_it !=
target.end(); ++target_it) {
267 const Int_t dim = target_it->first;
268 target_it->second += cell_density *
269 VarTransformInvers(dim, cellPosi[dim] + 0.5 * cellSize[dim]);
270 norm[dim] += cell_density;
275 for (std::map<Int_t, Float_t>::iterator target_it =
target.begin();
276 target_it !=
target.end(); ++target_it) {
279 const Int_t dim = target_it->first;
282 if (norm[dim] > std::numeric_limits<Float_t>::epsilon()) {
287 target[dim] = (fXmax[dim] - fXmin[dim]) / 2.;
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
This PDEFoam variant stores in every cell the sum of event weights and the sum of the squared event w...
This PDEFoam variant is used to estimate multiple targets by creating an event density foam (PDEFoamE...
virtual void CalculateMean(std::map< Int_t, Float_t > &, const std::vector< PDEFoamCell * > &)
This function calculates the mean target value from a given number of cells.
virtual void CalculateMpv(std::map< Int_t, Float_t > &, const std::vector< PDEFoamCell * > &)
This function calculates the most probable target value from a given number of cells.
virtual std::vector< Float_t > GetCellValue(const std::map< Int_t, Float_t > &, ECellValue)
This function is overridden from PDFEFoam.
PDEFoamMultiTarget()
Default constructor for streamer, user should not use it.
MsgLogger & Endl(MsgLogger &ml)