KaliVeda
Toolkit for HIC analysis
KVIDGridEditor.h
1 
4 #ifndef __KVIDGridEditor_H
5 #define __KVIDGridEditor_H
6 
7 #include "TCanvas.h"
8 #include "TPaveLabel.h"
9 #include "TPaveText.h"
10 #include "TStyle.h"
11 #include "TH2F.h"
12 #include "TF1.h"
13 #include "TF2.h"
14 #include "TROOT.h"
15 #include "TView.h"
16 #include "TKey.h"
17 #include "TSpectrum.h"
18 
19 #include "TMethod.h"
20 #include "TContextMenu.h"
21 #include "TGMsgBox.h"
22 #include "TGFileDialog.h"
23 
24 #include "KVIDGridEditorCanvas.h"
25 #include "KVBase.h"
26 #include "KVHashList.h"
27 #include "KVIDGraph.h"
28 #include "KVIDGridManager.h"
29 #include "KVIDZALine.h"
30 #include "KVIDZAGrid.h"
31 #include "KVIDentifier.h"
32 #include "KVDropDownDialog.h"
33 #include "KVVirtualIDFitter.h"
34 #include "TMethod.h"
35 #include "TContextMenu.h"
36 #include "TGMsgBox.h"
37 #include "KVInputDialog.h"
38 #include "KVHistoManipulator.h"
39 
40 #include "KVSpiderIdentificator.h"
41 #include "KVZALineFinder.h"
42 
43 #define FACTOR -1.
44 
58 class KVIDGridEditor : public KVBase {
60  friend class KVIDGridEditorCanvas;
61 
62 public:
63  enum MatrixType {
67  kPSA
68  };
69 
70 protected:
71 
78 
85 
91 
93 
98 
100 
104 
105  TF1* ft;
106  TF1* fs;
110 
112 
120 
122 
126 
131 
134 
135 protected:
136 
137  Double_t GetX0();
138  Double_t GetY0();
139  Double_t GetPdx();
140  Double_t GetPdy();
141 
142  Bool_t HandleKey(Int_t px, Int_t py);
143  void MoveHor(Int_t sign, Double_t speed = 1, Bool_t update = true);
144  void MoveVert(Int_t sign, Double_t speed = 1, Bool_t update = true);
145 
146  void ZoomOnMouse();
147  void AddMethod(const char* theMethod);
148  void SelectTrans(TPaveLabel* label);
149 
150  void SetDefault(); //
151  void init(); //
152  void AddTransformation(TString label); //construction de l'interface
153  void AddAction(TString label); //graphique et initialisation
154  void AddGridOption(TString label, KVHashList* thelist); //
155  void ConstructModulator(); //
156 
157  void TranslateX(Int_t Sign);
158  void TranslateY(Int_t Sign);
159  void RotateZ(Int_t Sign);
160  void ScaleX(Int_t Sign);
161  void ScaleY(Int_t Sign);
162  void ScaleXY(Int_t Sign);
163  void ScaleCurvature(Int_t Sign);
164 
165  void DynamicZoom(Int_t Sign, Int_t px = 0, Int_t py = 0, Double_t speed = .5); //zoom molette
166  void Unzoom(); //unzoom histo (accessible via l'interface : I)
167  void ZoomSelected(); //zoom 'gnuplot'
168 
169  void SetLogz(); //echelle log sur Oz
170  void SetLogy(); //echelle log sur Oy
171  void SetLogx(); //echelle log sur Ox
172  void Undo(); //annule toute les operation sur la grille courante (I)
173 
174  void SetPivot(Double_t xx0, Double_t yy0); // set pivot position (double click on the histo)
175  void SetPiedestal(Double_t ppdx, Double_t ppdy); // set piedestal position (shift click on the histo)
176 
177  void SetEditable(TPaveLabel* label);
178  void SelectLines(const Char_t* label);
179 
180  void NewLine(); //'Line'
181  void NewCut(); //'Cut'
182  void NewInfo(); //'Info'
183  void FitGrid(); //'Fit' avec fonctionnelle de T.G
184  void TestGrid(); //'Test' linearisation de l'histo avec la grille courante
185 
186  void DeleteObject(KVIDentifier* obj); //'Delete'
187 
188  void UpdateViewer(); //rafraichit l'interface
189  void DrawAtt(Bool_t piv); //affiche les bouton sur le canvas
190  void ResetColor(KVIDentifier* Ident); //redonne la couleur d'origine a une ligne
191  void ResetColor(KVList* IdentList); //redonne la couleur d'origine a une liste de ligne
192 
193  void SuggestMoreAction(); //'More', modifier cette methode pour ajouter des fonctionnalites !!!
194  void ChooseSelectedColor(); //'More' -> SetSelectedColor change la couleur des lignes selectionnes
195  void OpenRootFile(); //pas implemente
196 
197  void DispatchOrder(TPaveLabel* label); //methode qui distribue les ordres quand on clic sur un bouton
198  void ChangeStep(const char* title, Int_t dstep = 1);
199  const char* WhoIsSelected(); //methode qui regarde quelle transformation est selectionnee
200 
201  TString ListOfHistogramInMemory(); //revoie la liste des histo dans gFile
202  TString PreselectHistogram(TString ListOfName, Int_t ipert = 0); //revoie le nom de l' histo qui as le mm nom que la grille (si existe)
203  TH2* FindInCanvases(const Char_t* name);
204  void RecurseFileStructureFindHistos(TString& hist_names, TDirectory* the_directory);
205 
206  void ChangeZoomRatio(Int_t sign, Double_t speed = .5);
207 public:
208 
209  KVIDGridEditor();
211  ROOT_COPY_ASSIGN_OP(KVIDGridEditor)
212  virtual ~KVIDGridEditor();
213  void Copy(TObject&) const;
214 
215  void StartViewer(); //ouvre l'interface graphique, utilise quand double clic sur une grille dans le gIDGridManagerGUI
216  void Clear(const Option_t* opt = ""); //nettoi l'interface ('all' enleve la grille et l'histo)
217  void Close(); //ferme l'interface graphique
218  Bool_t IsClosed(); //true si l'interface est fermee
219  void CanvasWasClosed(); // called when GUI is used to close the canvas
220  void ForceUpdate(); //rafraichit toute l'interface de force
221  void SaveCurrentGrid(); //'More' -> SaveCurrentGrid ouvre une boite de dialogue pour sauver la grille
222 
223  void AutoFit(); //'More' -> AutoFit try to autofit the selected lines
224 
225  void SetPointStyle(int pstyle);
227  {
228  return fPointStyle;
229  }
230  void SetPointSize(double psize);
231  double GetPointSize()
232  {
233  return fPointSize;
234  }
235 
236  void SetHisto(TH2* hh); //donne l'histo a l'editeur
237  void SetGrid(KVIDGraph* gg, Bool_t histo = true); //donne la grille a l'editeur
238  void SetGrid(TString GridName); //donne la grille a l'editeur par son nom
239 
241  {
242  return TheGrid;
243  }
245  {
246  return TheHisto;
247  }
248 
250  {
251  return fCanvas;
252  }
253 
254  void SelectLabel(); //methode ajouter a la liste des auto-exec du canvas : gere les bouton
255  void MakeTransformation(); //methode ajouter a la liste des auto-exec du canvas : gere le reste
256 
258  {
259  SelectedColor = color;
260  }
261  void SelectLinesByZ(const Char_t* ListOfZ); //'More' -> 'SelectLinesByZ'
262  void SetDebug(Bool_t debug)
263  {
264  fDebug = debug;
265  }
266  void SetSVGMode()
267  {
268  fSVGMode = !fSVGMode;
269  }
270  void MakeScaleX(Double_t scaleFactor);
271  void MakeScaleY(Double_t scaleFactor);
272 
274  {
275  return fSpiderZp;
276  }
278  {
279  return fSpiderFactor;
280  }
281 
282  void SetSpiderOption(const char* opt = "DRLF")
283  {
284  fSpiderOption = opt;
285  }
286  void SpiderIdentification();
287  void FindZALines();
288  void ChangeMasses(const Char_t* Zl, Int_t dA);
289  void ChangeCharges(const Char_t* Zl, Int_t dZ);
290 
292  {
293  fAx = fAy = 1;
294  fBx = fBy = 0;
295  }
296  void PrintScalingRecap();
297 
298  ClassDef(KVIDGridEditor, 1) // outil de modification de grille.
299 };
300 
302 R__EXTERN KVIDGridEditor* gIDGridEditor;
303 
304 #endif
int Int_t
#define R__EXTERN
bool Bool_t
char Char_t
double Double_t
const char Option_t
#define ClassDef(name, id)
Base class for KaliVeda framework.
Definition: KVBase.h:142
Extended version of ROOT THashList.
Definition: KVHashList.h:29
Base class for particle identification in a 2D map.
Definition: KVIDGraph.h:32
Extended version of KVCanvas used by KVIDGridEditor.
Identification grid editor GUI ,.
Bool_t drawmode
true si mode draw (line, cut)
void SelectLinesByZ(const Char_t *ListOfZ)
Int_t imod
utilise pour le placement des boutons
void DrawAtt(Bool_t piv)
void AddTransformation(TString label)
void DynamicZoom(Int_t Sign, Int_t px=0, Int_t py=0, Double_t speed=.5)
Zoom in or out of histogram with mouse wheel.
void Copy(TObject &) const
void SelectLines(const Char_t *label)
void RotateZ(Int_t Sign)
KVIDGridEditor()
Default constructor.
void ScaleY(Int_t Sign)
TF2 * frx
rotation
double GetPointSize()
KVHashList * lplabel5
contient la liste des TPaveLabel pour moduler les pas (vert)
KVHashList * lplabel4
contient la liste des TPaveLabel pour editer la grille (rouge)
void SetGrid(KVIDGraph *gg, Bool_t histo=true)
TString fSpiderOption
void SetPiedestal(Double_t ppdx, Double_t ppdy)
piedestal used during SpiderIdentification
Bool_t moved
utilise pour les differents zooms
KVString fListOfMethods
void MoveHor(Int_t sign, Double_t speed=1, Bool_t update=true)
TVirtualPad * fPad
KVIDGraph * GetGrid()
Bool_t aoemode
true si mode age of empire
void ResetScalingRecap()
void RecurseFileStructureFindHistos(TString &hist_names, TDirectory *the_directory)
TString ListOfHistogramInMemory()
void SetSpiderOption(const char *opt="DRLF")
void ChangeZoomRatio(Int_t sign, Double_t speed=.5)
TString PreselectHistogram(TString ListOfName, Int_t ipert=0)
void TranslateX(Int_t Sign)
Double_t oldy
utilises pour les differents zooms
void ScaleX(Int_t Sign)
void ScaleCurvature(Int_t Sign)
void ChangeCharges(const Char_t *Zl, Int_t dZ)
void MakeScaleX(Double_t scaleFactor)
void SetDebug(Bool_t debug)
const char * WhoIsSelected()
void ChangeStep(const char *title, Int_t dstep=1)
void AddGridOption(TString label, KVHashList *thelist)
TH2 * FindInCanvases(const Char_t *name)
void SetPointStyle(int pstyle)
void StartViewer()
Close();.
void DispatchOrder(TPaveLabel *label)
void ScaleXY(Int_t Sign)
virtual ~KVIDGridEditor()
Destructor.
TF1 * fsy
scaling
void TranslateY(Int_t Sign)
void MakeScaleY(Double_t scaleFactor)
KVList * ListOfLines
liste des lignes selectionnees
TF1 * fs
scaling
void SetSelectedColor(Int_t color)
TH2 * TheHisto
pointeur sur l'histogramme
void SelectTrans(TPaveLabel *label)
void ResetColor(KVIDentifier *Ident)
void Clear(const Option_t *opt="")
KVIDGridEditorCanvas * fCanvas
void AddMethod(const char *theMethod)
KVIDGraph * TheGrid
pointeur sur la grille courante
Bool_t HandleKey(Int_t px, Int_t py)
Handle keys.
TPaveText * fKeyShow
KVHashList * lplabel2
contient la liste des TPaveLabel pour les actions (rouge)
void SetHisto(TH2 *hh)
KVString fDefaultMethod
KVHashList * lplabel3
contient la liste des TPaveLabel pour les selections de lignes (vert)
void MoveVert(Int_t sign, Double_t speed=1, Bool_t update=true)
TCanvas * GetEditorCanvas()
TF1 * ft
translation
void SetPointSize(double psize)
void ChangeMasses(const Char_t *Zl, Int_t dA)
Int_t SelectedColor
couleur des lignes selectionnees
Bool_t venermode
true si mode select
TF2 * fry
rotation
TPaveLabel * modulator
Bool_t ownhisto
true si histo par defaut
void SetPivot(Double_t xx0, Double_t yy0)
void SetEditable(TPaveLabel *label)
Bool_t selectmode
true si mode vener
Double_t fBy
scaling recap for current grid
Double_t ymax
utilises pour les differents zooms
Double_t GetSpiderFactor()
TGraph * fPiedestal
KVHashList * lplabel
contient la liste des TPaveLabel pour les transformations (rouge)
Double_t x0
coordonne x du pivot
void DeleteObject(KVIDentifier *obj)
Double_t fSpiderFactor
Double_t y0
coordonne y du pivot
Bool_t dlmode
true si mode delete
void AddAction(TString label)
Double_t fPointSize
Base class for graphical cuts used in particle identification.
Definition: KVIDentifier.h:28
Extended TList class which owns its objects by default.
Definition: KVList.h:28
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
int Sign(const T &x)