39 fNGroups(
src.fNGroups),
59 for (
int i = 0;
i < rhs.GetSize();
i++) {
62 rhs.GetIndexValue(
i, ind,
val);
67 for (
int i = 0;
i < rhs.GetNGroups();
i++) {
98 LOG(info) <<
"No data";
101 int cnt = 0, point = 0;
110 while (cnt <
fSize) {
111 Double_t resid =
fValue[cnt++];
112 Double_t* derLoc =
GetValue() + cnt;
120 Double_t* derGlo =
GetValue() + cnt;
128 printf(
"\n*** Point#%2d | Residual = %+.4e | Weight = %+.4e\n", point++, resid,
weight);
130 for (
int i = 0;
i < nLoc;
i++) {
131 printf(
"[%5d] %+.4e|", indLoc[
i], derLoc[
i]);
135 for (
int i = 0;
i < nGlo;
i++) {
136 printf(
"[%5d] %+.4e|", indGlo[
i], derGlo[
i]);
146 LOG(info) <<
"No data";
150 double prodsum = 0.0;
152 while (cnt <
fSize) {
153 Double_t resid =
fValue[cnt++];
158 Double_t* derGlo =
GetValue() + cnt;
165 for (
int i = nGlo;
i--;) {
166 if (indGlo[
i] == indx) {
167 prodsum += resid *
weight * derGlo[
i];
178 LOG(error) <<
"No data";
181 int cnt = 0, point = 0;
182 while (cnt <
fSize) {
188 Double_t* derGlo =
GetValue() + cnt;
195 if (pnt != point++) {
198 for (
int i = nGlo;
i--;) {
199 if (indGlo[
i] == indx) {
212 LOG(error) <<
"No data";
215 int cnt = 0, point = 0;
216 while (cnt <
fSize) {
218 Double_t* derLoc =
GetValue() + cnt;
229 if (pnt != point++) {
232 for (
int i = nLoc;
i--;) {
233 if (indLoc[
i] == indx) {
246 LOG(error) <<
"No data";
249 int cnt = 0, point = 0;
250 while (cnt <
fSize) {
251 Double_t resid =
fValue[cnt++];
259 if (pnt != point++) {
271 LOG(error) <<
"No data";
274 int cnt = 0, point = 0;
275 while (cnt <
fSize) {
296 Int_t* tmpI =
new Int_t[bfsize];
301 Double_t* tmpD =
new Double_t[bfsize];
313 UShort_t* tmpI =
new UShort_t[bfsize];
ClassImp(MillePedeRecord)
Class to store the data of single track processing.
Store residuals and local/global deriavtives from a single track processing.
MillePedeRecord & operator=(const MillePedeRecord &rhs)
assignment op-r
void SetDtBufferSize(Int_t sz)
Int_t fSize
size of the record
Double_t GetWeight() const
void SetGrBufferSize(Int_t sz)
void ExpandDtBuffer(Int_t bfsize)
add extra space for derivatives data
Int_t * fIndex
[fSize] index of variables
void AddIndexValue(Int_t ind, Double_t val)
add new pair of index/value
void Print(const Option_t *opt="") const override
print itself
Double_t GetGlobalDeriv(Int_t pnt, Int_t indx) const
get derivative over global variable indx at point pnt
UShort_t * fGroupID
[fNGroups] groups id's+1 (in increasing order)
Int_t fNGroups
number of groups (e.g. detectors) contributing
Int_t GetGrBufferSize() const
void MarkGroup(Int_t id)
mark the presence of the detector group
MillePedeRecord()
default c-tor
Int_t GetGroupID(Int_t i) const
Double_t GetGloResWProd(Int_t indx) const
get sum of derivative over global variable indx * res. at point * weight
Double32_t fWeight
global weight for the record
void ExpandGrBuffer(Int_t bfsize)
add extra space for groupID data
Double_t GetResidual(Int_t pnt) const
get residual at point pnt
Double_t * GetValue() const
~MillePedeRecord() override
destuctor
Bool_t IsResidual(Int_t i) const
Double_t GetLocalDeriv(Int_t pnt, Int_t indx) const
get derivative over local variable indx at point pnt
Double32_t * fValue
[fSize] array of values: derivs,residuals
Int_t GetDtBufferSize() const
Bool_t IsWeight(Int_t i) const
GLuint GLuint GLfloat weight
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"