KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVPartition.cpp
1//Created by KVClassFactory on Mon Mar 29 14:58:00 2010
2//Author: bonnet
3
4#include "KVPartition.h"
5#include "TMath.h"
6#include "Riostream.h"
7#include "TArrayI.h"
8
10
11
12
13
14
16
17void KVPartition::init(Int_t mommax)
18{
19//Initialisation
20 fValues = new KVValues("Moments", mommax);
21
22 ftab = new TArrayI(20);
23 ftab_diff = new TArrayI(20);
24
25 fMult_diff = 0;
26
27}
28
29
30
33
35{
36// Constructor
37 init(mommax);
38}
39
40
41
44
46{
47// Default constructor
48 init();
49}
50
51
52
55
57{
58//Destructeur
59 delete fValues;
60 delete ftab;
61 delete ftab_diff;
62}
63
64
65
66
69
71{
72//Methode dérivée de KVIntegerList, Reinitialisation de l'object
73
75
76 fValues->Reset();
77 for (Int_t ii = 0; ii < ftab->fN; ii += 1) ftab->AddAt(ii, 0);
78 for (Int_t ii = 0; ii < ftab_diff->fN; ii += 1) ftab_diff->AddAt(ii, 0);
79
80 fMult = 0;
81 fMult_diff = 0;
82
83}
84
85
86
89
90void KVPartition::Copy(TObject& obj) const
91{
92//Methode dérivée de KVIntegerList, fait une copie dans l'objet "obj"
94 ((KVPartition&)obj).Update();
95
96}
97
98
99
105
107{
108//protected method, Methode dérivée de KVIntegerList,
109//Appel de KVIntegerList::Update()
110//les deux TArrayI ftab et ftab_diff sont mis à jour
111//un test de dimension est fait pour etendre si besoin
112
113 if (fMult > ftab->fN) ftab->Set(fMult);
115 //Info("Update","fMult=%d fMult_diff=%d",fMult,fMult_diff);
116 Int_t mdiff = 0, mtot = 0;
117 KVString snom = "", stamp = "";
118 for (Int_t ii = fLimiteRegle; ii >= 0; ii -= 1) {
119 Int_t contenu = fRegle->At(ii);
120 if (contenu > 0) {
121 ftab_diff->AddAt(ii, mdiff++);
122 for (Int_t mm = 0; mm < contenu; mm += 1) {
123 ftab->AddAt(ii, mtot++);
124 }
125
126 //Formattage du nom de la partition
127 stamp.Form("%d", ii);
128 snom += stamp;
129 if (contenu > 1) {
130 stamp.Form("(%d)", contenu);
131 snom += stamp;
132 }
133 snom += " ";
134 }
135 }
136 if (snom != "") snom.Remove(snom.Length() - 1);
137 SetName(snom.Data());
138 fLength = snom.Length();
139
141
142}
143
144
145
151
152void KVPartition::Print(Option_t* option) const
153{
154//Methode dérivée de KVIntegerList, imprime les informations
155//option="" -> appel uniquement de KVIntegerList::Print
156//option=="Moments", imprime les moments calculés via la classe KVValues
157//option=="Partition", imprime le nombre de valeurs GetMult() et le nombre de valeurs differentes (GetMultDiff())
159 if (!strcmp(option, "Moments")) {
160 Info("Print", "Moments #Sigma Z^{ordre}");
161 Info("Print", "Nombres de moments calcules %d", GetOrdreMax());
162 for (Int_t mm = 0; mm <= GetOrdreMax(); mm += 1) {
163 Info("Print", "Moments d'ordre %d -> %1.0lf", mm, GetMoment(mm));
164 }
165 }
166 else if (!strcmp(option, "Partition")) {
167 Info("Print", "Multiplicite %d / Nombre de valeurs differentes %d", GetMult(), GetMultDiff());
168 }
169 else {
170
171 }
172
173}
174
175
176
181
183{
184//protected method, dérivée de KVIntegerList
185//Incrementation si besoin du nombre de valeurs differentes GetMultDiff
186//Remplissage de l'objet KVIntegerList::fValues, pour le calcul des moments
187 if (!Contains(val)) fMult_diff += 1;
188 KVIntegerList::add_values(val, freq);
189 fValues->FillVar(val, freq);
190
191}
192
193
194
199
201{
202//protected method, dérivée de KVIntegerList
203//Decrementation si besoin du nombre de valeurs differentes GetMultDiff
204//Les valeurs considerees sont également retires dans le calcul des moments, object KVIntegerList::fValues
205
206 if (GetFrequency(val) <= freq) fMult_diff -= 1;
207 fValues->FillVar(val, -1.*freq);
208 return KVIntegerList::remove_values(val, freq);
209
210}
211
212
213
219
221{
222
223//Donne le 1er, 2eme ... plus gros de la partition
224//Attention notation C
225// - le premier -> 0
226// - le dernier -> N-1 ou N est la multiplicite
227
228 return ((rang < GetMoment(0)) ? Double_t(GetValeur(rang)) : -1.);
229
230}
231
232
233
239
241{
242
243//Donne le 1er, 2eme ... plus petit de la partition
244//Attention notation C
245// - le premier -> 0
246// - le dernier -> N-1 ou N est la multiplicite
247
248 Int_t inverse = Int_t(GetMoment(0)) - 1 - rang;
249 return ((inverse < GetMoment(0)) ? Double_t(GetValeur(inverse)) : -1.);
250
251}
252
253
254
257
259{
260
261//return kTRUE if the indicated rank is occupied
262 Int_t val = Int_t(GetZmax(rang));
263 if (val == -1) return kFALSE;
264 return Remove(val);
265
266}
267
268
269
272
274{
275
276//return kTRUE if the indicated rank is occupied
277 Int_t val = Int_t(GetZmax(rang));
278 if (val == -1) return kFALSE;
279 return RemoveAll(val);
280}
281
282
int Int_t
bool Bool_t
constexpr Bool_t kFALSE
double Double_t
const char Option_t
Option_t Option_t option
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 Atom_t Time_t stamp
Int_t fMult
Nombre d'éléments dans la liste.
virtual Bool_t remove_values(Int_t val, Int_t freq)
Ssiz_t fLength
Longueur du nom de la liste/partition usilisée dans Compare.
void Clear(Option_t *option="")
Classe dérivée de TNamed, Reinitialisation de l'object.
Int_t fLimiteRegle
taille max de fRegle
void Print(Option_t *option="") const
Classe dérivée de TNamed, Imprime la liste formattée et la population associée.
virtual void add_values(Int_t val, Int_t freq)
void Copy(TObject &named) const
Classe dérivée de TNamed, fait une copie vers l'objet obj.
Int_t GetFrequency(Int_t val) const
Bool_t Contains(Int_t val) const
TArrayI * fRegle
tableau d'entiers où sont stockée l'occurence des valeurs
Bool_t Remove(Int_t val, Int_t freq)
Bool_t RemoveAll(Int_t val)
Handle partitions.
Definition KVPartition.h:31
Bool_t RemoveAllValuesAt(Int_t rang)
return kTRUE if the indicated rank is occupied
Int_t GetMult(void) const
Definition KVPartition.h:77
Int_t GetValeur(Int_t rang) const
Definition KVPartition.h:85
Bool_t RemoveAt(Int_t rang)
return kTRUE if the indicated rank is occupied
Bool_t remove_values(Int_t val, Int_t freq)
void Clear(Option_t *option="")
Methode dérivée de KVIntegerList, Reinitialisation de l'object.
void Copy(TObject &obj) const
Methode dérivée de KVIntegerList, fait une copie dans l'objet "obj".
TArrayI * ftab
tableau regroupant tous les entiers de la partition (ordre decroissant)
Definition KVPartition.h:35
void Print(Option_t *option="") const
virtual ~KVPartition()
Destructeur.
Int_t GetMultDiff(void) const
Methodes donnant aux valeurs uniques de la partition.
Definition KVPartition.h:62
Int_t GetOrdreMax() const
Definition KVPartition.h:56
Int_t fMult_diff
Nbre de valeurs differentes.
Definition KVPartition.h:37
Double_t GetMoment(Int_t ordre) const
Methodes donnant acces aux variables calculees de la partition.
Definition KVPartition.h:95
void add_values(Int_t val, Int_t freq)
Double_t GetZmax(Int_t rang=0) const
Double_t GetZmin(Int_t rang=0) const
TArrayI * ftab_diff
tableau regroupant tous les entiers differents de la partition (ordre decroissant)
Definition KVPartition.h:36
KVValues * fValues
Object permettant de gerer les moments ou autre.
Definition KVPartition.h:38
KVPartition()
Default constructor.
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition KVString.h:73
Handle Operation on variable.
Definition KVValues.h:25
void FillVar(Double_t val)
Definition KVValues.cpp:329
void Reset()
Definition KVValues.cpp:117
void Set(Int_t n) override
Int_t At(Int_t i) const
void AddAt(Int_t c, Int_t i)
Int_t fN
virtual void SetName(const char *name)
void SetBit(UInt_t f)
virtual void Info(const char *method, const char *msgfmt,...) const
Ssiz_t Length() const
const char * Data() const
TString & Remove(EStripType s, char c)
ClassImp(TPyArg)