StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
TIdTruUtil.cxx
1 /***************************************************************************
2  *
3  * $Id: TIdTruUtil.cxx,v 1.2 2019/09/05 18:34:48 perev Exp $
4  *
5  ***************************************************************************
6  *
7  * Description:
8  *
9  ***************************************************************************
10  **************************************************************************/
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <assert.h>
14 #include "TIdTruUtil.h"
15 ClassImp(TIdTruUtil)
16 //______________________________________________________________________________
17 TIdTruUtil::TIdTruUtil(const char *name):TNamed(name,"")
18 {
19  Clear();
20 }
21 //______________________________________________________________________________
22 TIdTruUtil::~TIdTruUtil()
23 {
24 }
25 
26 //______________________________________________________________________________
27 void TIdTruUtil::Clear(const char*)
28 {
29 mEvalted = 0;
30 mIdTru = 0;
31 mQua = 0;
32 mSize = 0;
33 mDetWt.clear();
34 }
35 //______________________________________________________________________________
36 void TIdTruUtil::Eval()
37 {
38  mEvalted = 1;
39  mIdTru = 0;
40  mQua = 0;
41  double totWt=0;
42  std::multimap <double,int> myWtDet;
43  for (auto it = mDetWt.begin(); it!= mDetWt.end(); ++it) {
44  int idTru = (*it).first;
45  if (!idTru) continue;
46  double wt = (*it).second;
47  totWt+=wt;
48  myWtDet.insert( std::pair<double,int>(-wt,idTru));
49  }
50  if (!myWtDet.size()) return;
51  mQua = fabs((*myWtDet.begin()).first/(totWt+1e-11));
52  mIdTru = (*myWtDet.begin()).second;
53 }
54 //______________________________________________________________________________
55 void TIdTruUtil::Add(int idTru,int qa)
56 {
57  mEvalted = 0;
58  if (!idTru) return;
59  mSize++;
60  mDetWt[idTru]+=qa;
61 }
62 
63 //______________________________________________________________________________
64 int TIdTruUtil::GetIdTru()
65 {
66  if (!mEvalted) Eval();
67  return mIdTru;
68 }
69 
70 //______________________________________________________________________________
71 double TIdTruUtil::GetQua()
72 {
73  if (!mEvalted) Eval();
74  return mQua;
75 }
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89