Spider class.
A spider view is a handy way to visualize a set of data stored in a TTree. It draws as many polar axes as selected data members. For each of them, it draws on the axis the position of the present event between the min and max of the data member. Two modes are available:
The spider plot is available from the treeviewer called by "atree->StartViewer()", or simply by calling its constructor and defining the variables to display.
Public Member Functions | |
TSpider () | |
Default constructor. | |
TSpider (TTree *tree, const char *varexp, const char *selection, Option_t *option="", Long64_t nentries=0, Long64_t firstentry=0) | |
Normal constructor. | |
~TSpider () | |
Destructor. | |
void | AddSuperposed (TSpider *sp) |
Allow to superpose several spider views. | |
void | AddVariable (const char *varexp) |
Add a variable to the plot from its expression. | |
void | DeleteVariable (const char *varexp) |
Delete a variable from its expression. | |
virtual Int_t | DistancetoPrimitive (Int_t px, Int_t py) |
Compute the distance to the spider. | |
virtual void | Draw (Option_t *options="") |
Draw the spider. | |
virtual void | ExecuteEvent (Int_t event, Int_t px, Int_t py) |
Execute the corresponding event. | |
Color_t | GetAverageFillColor () const |
Get the Fill Color of the average. | |
Style_t | GetAverageFillStyle () const |
Get the FillStyle of the average. | |
Color_t | GetAverageLineColor () const |
Get the LineColor of the average. | |
Style_t | GetAverageLineStyle () const |
Get the LineStyle of the average. | |
Width_t | GetAverageLineWidth () const |
Get the LineWidth of the average. | |
Long64_t | GetCurrentEntry () const |
Bool_t | GetDisplayAverage () const |
Long64_t | GetEntriesToProcess (Long64_t firstentry, Long64_t nentries) const |
return the number of entries to be processed this function checks that nentries is not bigger than the number of entries in the Tree or in the associated TEventlist | |
Int_t | GetNx () const |
Int_t | GetNy () const |
Bool_t | GetSegmentDisplay () const |
void | GotoEntry (Long64_t e) |
Go to a specified entry. | |
void | GotoFollowing () |
Go to the next entry. | |
void | GotoNext () |
Go to the next entries. | |
void | GotoPreceding () |
Go to the last entry. | |
void | GotoPrevious () |
Go to the previous entries. | |
virtual TClass * | IsA () const |
virtual void | Paint (Option_t *options) |
Paint the spider. | |
void | SetAverageFillColor (Color_t col) |
Set the Fill Color of the average. | |
void | SetAverageFillStyle (Style_t sty) |
Set the FillStyle of the average. | |
void | SetAverageLineColor (Color_t col) |
Set the LineColor of the average. | |
void | SetAverageLineStyle (Style_t sty) |
Set the LineStyle of the average. | |
void | SetAverageLineWidth (Width_t wid) |
Set the LineWidth of the average. | |
void | SetDisplayAverage (Bool_t disp) |
Display or not the average. | |
virtual void | SetFillColor (Color_t col) |
Set fill color. | |
virtual void | SetFillStyle (Style_t sty) |
Set fill style. | |
virtual void | SetLineColor (Color_t col) |
Set lin color. | |
virtual void | SetLineStyle (Style_t sty) |
Set line style. | |
virtual void | SetLineWidth (Width_t wid) |
Set line width. | |
void | SetNdivRadial (Int_t div) |
Set number of radial divisions. | |
void | SetNx (UInt_t nx) |
Set the X number of sub pads. | |
void | SetNy (UInt_t ny) |
Set the Y number of sub pads. | |
void | SetSegmentDisplay (Bool_t seg) |
Set the segment display or not. | |
void | SetSelectionExpression (const char *selexp) |
Compile selection expression if there is one. | |
void | SetShowRange (Bool_t showrange) |
void | SetVariablesExpression (const char *varexp) |
Compile the variables expression from the given string varexp. | |
virtual void | Streamer (TBuffer &) |
Stream an object of class TObject. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
void | SuperposeTo (TSpider *sp) |
Public Member Functions inherited from TObject | |
TObject () | |
TObject constructor. | |
TObject (const TObject &object) | |
TObject copy ctor. | |
virtual | ~TObject () |
TObject destructor. | |
void | AbstractMethod (const char *method) const |
Use this method to implement an "abstract" method that you don't want to leave purely abstract. | |
virtual void | AppendPad (Option_t *option="") |
Append graphics object to current pad. | |
virtual void | Browse (TBrowser *b) |
Browse object. May be overridden for another default action. | |
ULong_t | CheckedHash () |
Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object. | |
virtual const char * | ClassName () const |
Returns name of class to which the object belongs. | |
virtual void | Clear (Option_t *="") |
virtual TObject * | Clone (const char *newname="") const |
Make a clone of an object using the Streamer facility. | |
virtual Int_t | Compare (const TObject *obj) const |
Compare abstract method. | |
virtual void | Copy (TObject &object) const |
Copy this to obj. | |
virtual void | Delete (Option_t *option="") |
Delete this object. | |
virtual void | DrawClass () const |
Draw class inheritance tree of the class to which this object belongs. | |
virtual TObject * | DrawClone (Option_t *option="") const |
Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1) . | |
virtual void | Dump () const |
Dump contents of object on stdout. | |
virtual void | Error (const char *method, const char *msgfmt,...) const |
Issue error message. | |
virtual void | Execute (const char *method, const char *params, Int_t *error=nullptr) |
Execute method on this object with the given parameter string, e.g. | |
virtual void | Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr) |
Execute method on this object with parameters stored in the TObjArray. | |
virtual void | Fatal (const char *method, const char *msgfmt,...) const |
Issue fatal error message. | |
virtual TObject * | FindObject (const char *name) const |
Must be redefined in derived classes. | |
virtual TObject * | FindObject (const TObject *obj) const |
Must be redefined in derived classes. | |
virtual Option_t * | GetDrawOption () const |
Get option used by the graphics system to draw this object. | |
virtual const char * | GetIconName () const |
Returns mime type name of object. | |
virtual const char * | GetName () const |
Returns name of object. | |
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
Returns string containing info about the object at position (px,py). | |
virtual Option_t * | GetOption () const |
virtual const char * | GetTitle () const |
Returns title of object. | |
virtual UInt_t | GetUniqueID () const |
Return the unique object id. | |
virtual Bool_t | HandleTimer (TTimer *timer) |
Execute action in response of a timer timing out. | |
virtual ULong_t | Hash () const |
Return hash value for this object. | |
Bool_t | HasInconsistentHash () const |
Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e. | |
virtual void | Info (const char *method, const char *msgfmt,...) const |
Issue info message. | |
virtual Bool_t | InheritsFrom (const char *classname) const |
Returns kTRUE if object inherits from class "classname". | |
virtual Bool_t | InheritsFrom (const TClass *cl) const |
Returns kTRUE if object inherits from TClass cl. | |
virtual void | Inspect () const |
Dump contents of this object in a graphics canvas. | |
void | InvertBit (UInt_t f) |
Bool_t | IsDestructed () const |
IsDestructed. | |
virtual Bool_t | IsEqual (const TObject *obj) const |
Default equal comparison (objects are equal if they have the same address in memory). | |
virtual Bool_t | IsFolder () const |
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). | |
R__ALWAYS_INLINE Bool_t | IsOnHeap () const |
virtual Bool_t | IsSortable () const |
R__ALWAYS_INLINE Bool_t | IsZombie () const |
virtual void | ls (Option_t *option="") const |
The ls function lists the contents of a class on stdout. | |
void | MayNotUse (const char *method) const |
Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary). | |
virtual Bool_t | Notify () |
This method must be overridden to handle object notification. | |
void | Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const |
Use this method to declare a method obsolete. | |
void | operator delete (void *ptr) |
Operator delete. | |
void | operator delete[] (void *ptr) |
Operator delete []. | |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, void *vp) |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, void *vp) |
TObject & | operator= (const TObject &rhs) |
TObject assignment operator. | |
virtual void | Pop () |
Pop on object drawn in a pad to the top of the display list. | |
virtual void | Print (Option_t *option="") const |
This method must be overridden when a class wants to print itself. | |
virtual Int_t | Read (const char *name) |
Read contents of object with specified name from the current directory. | |
virtual void | RecursiveRemove (TObject *obj) |
Recursively remove this object from a list. | |
void | ResetBit (UInt_t f) |
virtual void | SaveAs (const char *filename="", Option_t *option="") const |
Save this object in the file specified by filename. | |
virtual void | SavePrimitive (std::ostream &out, Option_t *option="") |
Save a primitive as a C++ statement(s) on output stream "out". | |
void | SetBit (UInt_t f) |
void | SetBit (UInt_t f, Bool_t set) |
Set or unset the user status bits as specified in f. | |
virtual void | SetDrawOption (Option_t *option="") |
Set drawing option for object. | |
virtual void | SetUniqueID (UInt_t uid) |
Set the unique object id. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
virtual void | SysError (const char *method, const char *msgfmt,...) const |
Issue system error message. | |
R__ALWAYS_INLINE Bool_t | TestBit (UInt_t f) const |
Int_t | TestBits (UInt_t f) const |
virtual void | UseCurrentStyle () |
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked. | |
virtual void | Warning (const char *method, const char *msgfmt,...) const |
Issue warning message. | |
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) |
Write this object to the current directory. | |
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const |
Write this object to the current directory. | |
Public Member Functions inherited from TAttFill | |
TAttFill () | |
AttFill default constructor. | |
TAttFill (Color_t fcolor, Style_t fstyle) | |
AttFill normal constructor. | |
virtual | ~TAttFill () |
AttFill destructor. | |
void | Copy (TAttFill &attfill) const |
Copy this fill attributes to a new TAttFill. | |
virtual Color_t | GetFillColor () const |
Return the fill area color. | |
virtual Style_t | GetFillStyle () const |
Return the fill area style. | |
virtual Bool_t | IsTransparent () const |
virtual void | Modify () |
Change current fill area attributes if necessary. | |
virtual void | ResetAttFill (Option_t *option="") |
Reset this fill attributes to default values. | |
virtual void | SaveFillAttributes (std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1001) |
Save fill attributes as C++ statement(s) on output stream out. | |
virtual void | SetFillAttributes () |
Invoke the DialogCanvas Fill attributes. | |
virtual void | SetFillColorAlpha (Color_t fcolor, Float_t falpha) |
Set a transparent fill color. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Public Member Functions inherited from TAttLine | |
TAttLine () | |
AttLine default constructor. | |
TAttLine (Color_t lcolor, Style_t lstyle, Width_t lwidth) | |
AttLine normal constructor. | |
virtual | ~TAttLine () |
AttLine destructor. | |
void | Copy (TAttLine &attline) const |
Copy this line attributes to a new TAttLine. | |
Int_t | DistancetoLine (Int_t px, Int_t py, Double_t xp1, Double_t yp1, Double_t xp2, Double_t yp2) |
Compute distance from point px,py to a line. | |
virtual Color_t | GetLineColor () const |
Return the line color. | |
virtual Style_t | GetLineStyle () const |
Return the line style. | |
virtual Width_t | GetLineWidth () const |
Return the line width. | |
virtual void | Modify () |
Change current line attributes if necessary. | |
virtual void | ResetAttLine (Option_t *option="") |
Reset this line attributes to default values. | |
virtual void | SaveLineAttributes (std::ostream &out, const char *name, Int_t coldef=1, Int_t stydef=1, Int_t widdef=1) |
Save line attributes as C++ statement(s) on output stream out. | |
virtual void | SetLineAttributes () |
Invoke the DialogCanvas Line attributes. | |
virtual void | SetLineColorAlpha (Color_t lcolor, Float_t lalpha) |
Set a transparent line color. | |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Static Public Member Functions | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Static Public Member Functions inherited from TObject | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
static Longptr_t | GetDtorOnly () |
Return destructor only flag. | |
static Bool_t | GetObjectStat () |
Get status of object stat flag. | |
static void | SetDtorOnly (void *obj) |
Set destructor only flag. | |
static void | SetObjectStat (Bool_t stat) |
Turn on/off tracking of objects in the TObjectTable. | |
Static Public Member Functions inherited from TAttFill | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Static Public Member Functions inherited from TAttLine | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Private Member Functions | |
void | DrawPoly (Option_t *options) |
Paint the polygon representing the current entry. | |
void | DrawPolyAverage (Option_t *options) |
Paint the Polygon representing the average value of the variables. | |
void | DrawSlices (Option_t *options) |
Draw the slices of the segment plot. | |
void | DrawSlicesAverage (Option_t *options) |
Draw the slices representing the average for the segment plot. | |
Int_t | FindTextAlign (Double_t theta) |
Find the alignement rule to apply for TText::SetTextAlign(Short_t). | |
Double_t | FindTextAngle (Double_t theta) |
Determine the orientation of the polar labels according to their angle. | |
void | InitArrays (Int_t newsize) |
Check if the arrays size is enough and reallocate them if not. | |
void | InitVariables (Long64_t firstentry, Long64_t nentries) |
Browse the tree to set the min, max and average value of each variable of fVar. | |
void | SetCurrentEntries () |
Set the current selected entries. | |
void | SyncFormulas () |
Create a TreeFormulaManager to coordinate the formulas. | |
void | UpdateView () |
Update the polylines or the arcs for the current entries. | |
Private Attributes | |
Bool_t | fAngularLabels |
True if the labels are oriented according to their axis. | |
Int_t | fArraySize |
Actual size of the arrays. | |
Double_t * | fAve |
[fNcols] Average value of each variable. | |
TPolyLine * | fAveragePoly |
Polygon representing the average variables value. | |
TArc ** | fAverageSlices |
! Average slices. | |
TCanvas * | fCanvas |
! Pointer to the mother pad. | |
Long64_t * | fCurrentEntries |
![fNx*fNy] current selected entries; | |
Bool_t | fDisplayAverage |
Display or not the average. | |
Long64_t | fEntry |
Present entry number in fTree. | |
Long64_t | fFirstEntry |
First entry. | |
Bool_t | fForceDim |
Force dimension. | |
TList * | fFormulas |
List of all formulas to represent. | |
TList * | fInput |
Used for fSelector. | |
TTreeFormulaManager * | fManager |
Coordinator for the formulas. | |
Double_t * | fMax |
[fNcols] Maximum value of the variables. | |
Double_t * | fMin |
[fNcols] Minimum value of the variables. | |
UInt_t | fNcols |
Number of variables. | |
Long64_t | fNentries |
Number of entries. | |
UInt_t | fNx |
Number of horizontal spider plots. | |
UInt_t | fNy |
Number of vertical spider plots. | |
TGraphPolargram * | fPolargram |
Polar graph. | |
TList * | fPolyList |
Polygons representing the variables. | |
Bool_t | fSegmentDisplay |
True if displaying a segment plot. | |
TTreeFormula * | fSelect |
Selection condition. | |
TSelectorDraw * | fSelector |
! Selector. | |
Bool_t | fShowRange |
Show range of variables or not. | |
TList * | fSuperposed |
Superposed spider plots. | |
TTree * | fTree |
Pointer to the TTree to represent. | |
Additional Inherited Members | |
Public Types inherited from TObject | |
enum | { kIsOnHeap = 0x01000000 , kNotDeleted = 0x02000000 , kZombie = 0x04000000 , kInconsistent = 0x08000000 , kBitMask = 0x00ffffff } |
enum | { kSingleKey = (1ULL << ( 0 )) , kOverwrite = (1ULL << ( 1 )) , kWriteDelete = (1ULL << ( 2 )) } |
enum | EDeprecatedStatusBits { kObjInCanvas = (1ULL << ( 3 )) } |
enum | EStatusBits { kCanDelete = (1ULL << ( 0 )) , kMustCleanup = (1ULL << ( 3 )) , kIsReferenced = (1ULL << ( 4 )) , kHasUUID = (1ULL << ( 5 )) , kCannotPick = (1ULL << ( 6 )) , kNoContextMenu = (1ULL << ( 8 )) , kInvalidObject = (1ULL << ( 13 )) } |
Protected Types inherited from TObject | |
enum | { kOnlyPrepStep = (1ULL << ( 3 )) } |
Protected Member Functions inherited from TObject | |
virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
Interface to ErrorHandler (protected). | |
void | MakeZombie () |
Protected Attributes inherited from TAttFill | |
Color_t | fFillColor |
Fill area color. | |
Style_t | fFillStyle |
Fill area style. | |
Protected Attributes inherited from TAttLine | |
Color_t | fLineColor |
Line color. | |
Style_t | fLineStyle |
Line style. | |
Width_t | fLineWidth |
Line width. | |
#include <TSpider.h>
TSpider::TSpider | ( | ) |
Default constructor.
Definition at line 76 of file TSpider.cxx.
TSpider::TSpider | ( | TTree * | tree, |
const char * | varexp, | ||
const char * | selection, | ||
Option_t * | option = "" , |
||
Long64_t | nentries = 0 , |
||
Long64_t | firstentry = 0 |
||
) |
Normal constructor.
Options are:
Definition at line 114 of file TSpider.cxx.
TSpider::~TSpider | ( | ) |
Destructor.
Definition at line 174 of file TSpider.cxx.
void TSpider::AddSuperposed | ( | TSpider * | sp | ) |
Allow to superpose several spider views.
Definition at line 206 of file TSpider.cxx.
void TSpider::AddVariable | ( | const char * | varexp | ) |
Add a variable to the plot from its expression.
Definition at line 215 of file TSpider.cxx.
|
static |
|
inlinestaticconstexpr |
|
inlinestatic |
void TSpider::DeleteVariable | ( | const char * | varexp | ) |
Delete a variable from its expression.
Definition at line 353 of file TSpider.cxx.
Compute the distance to the spider.
Reimplemented from TObject.
Definition at line 439 of file TSpider.cxx.
|
virtual |
|
private |
Paint the polygon representing the current entry.
Definition at line 530 of file TSpider.cxx.
|
private |
Paint the Polygon representing the average value of the variables.
Definition at line 492 of file TSpider.cxx.
|
private |
Draw the slices of the segment plot.
Definition at line 560 of file TSpider.cxx.
|
private |
Draw the slices representing the average for the segment plot.
Definition at line 586 of file TSpider.cxx.
Execute the corresponding event.
Reimplemented from TObject.
Definition at line 667 of file TSpider.cxx.
Find the alignement rule to apply for TText::SetTextAlign(Short_t).
Definition at line 676 of file TSpider.cxx.
Determine the orientation of the polar labels according to their angle.
Definition at line 705 of file TSpider.cxx.
Color_t TSpider::GetAverageFillColor | ( | ) | const |
Get the Fill Color of the average.
Definition at line 647 of file TSpider.cxx.
Style_t TSpider::GetAverageFillStyle | ( | ) | const |
Get the FillStyle of the average.
Definition at line 657 of file TSpider.cxx.
Color_t TSpider::GetAverageLineColor | ( | ) | const |
Get the LineColor of the average.
Definition at line 627 of file TSpider.cxx.
Style_t TSpider::GetAverageLineStyle | ( | ) | const |
Get the LineStyle of the average.
Definition at line 617 of file TSpider.cxx.
Width_t TSpider::GetAverageLineWidth | ( | ) | const |
Get the LineWidth of the average.
Definition at line 637 of file TSpider.cxx.
return the number of entries to be processed this function checks that nentries is not bigger than the number of entries in the Tree or in the associated TEventlist
Definition at line 727 of file TSpider.cxx.
void TSpider::GotoEntry | ( | Long64_t | e | ) |
Go to a specified entry.
Definition at line 744 of file TSpider.cxx.
void TSpider::GotoFollowing | ( | ) |
Go to the next entry.
Definition at line 774 of file TSpider.cxx.
void TSpider::GotoNext | ( | ) |
Go to the next entries.
Definition at line 754 of file TSpider.cxx.
void TSpider::GotoPreceding | ( | ) |
Go to the last entry.
Definition at line 784 of file TSpider.cxx.
void TSpider::GotoPrevious | ( | ) |
Go to the previous entries.
Definition at line 764 of file TSpider.cxx.
|
private |
Check if the arrays size is enough and reallocate them if not.
Definition at line 794 of file TSpider.cxx.
Browse the tree to set the min, max and average value of each variable of fVar.
Definition at line 832 of file TSpider.cxx.
|
inlinevirtual |
|
virtual |
void TSpider::SetAverageFillColor | ( | Color_t | col | ) |
Set the Fill Color of the average.
Definition at line 1001 of file TSpider.cxx.
void TSpider::SetAverageFillStyle | ( | Style_t | sty | ) |
Set the FillStyle of the average.
Definition at line 1013 of file TSpider.cxx.
void TSpider::SetAverageLineColor | ( | Color_t | col | ) |
Set the LineColor of the average.
Definition at line 977 of file TSpider.cxx.
void TSpider::SetAverageLineStyle | ( | Style_t | sty | ) |
Set the LineStyle of the average.
Definition at line 965 of file TSpider.cxx.
void TSpider::SetAverageLineWidth | ( | Width_t | wid | ) |
Set the LineWidth of the average.
Definition at line 989 of file TSpider.cxx.
|
private |
Set the current selected entries.
Definition at line 1067 of file TSpider.cxx.
void TSpider::SetDisplayAverage | ( | Bool_t | disp | ) |
Display or not the average.
Definition at line 1025 of file TSpider.cxx.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
void TSpider::SetNdivRadial | ( | Int_t | div | ) |
Set number of radial divisions.
Definition at line 1217 of file TSpider.cxx.
void TSpider::SetNx | ( | UInt_t | nx | ) |
Set the X number of sub pads.
Definition at line 1226 of file TSpider.cxx.
void TSpider::SetNy | ( | UInt_t | ny | ) |
Set the Y number of sub pads.
Definition at line 1303 of file TSpider.cxx.
void TSpider::SetSegmentDisplay | ( | Bool_t | seg | ) |
Set the segment display or not.
Definition at line 1380 of file TSpider.cxx.
void TSpider::SetSelectionExpression | ( | const char * | selexp | ) |
Compile selection expression if there is one.
Definition at line 1471 of file TSpider.cxx.
void TSpider::SetVariablesExpression | ( | const char * | varexp | ) |
Compile the variables expression from the given string varexp.
Definition at line 1484 of file TSpider.cxx.
|
virtual |
|
inline |
|
private |
Create a TreeFormulaManager to coordinate the formulas.
Definition at line 1522 of file TSpider.cxx.
|
private |
Update the polylines or the arcs for the current entries.
Definition at line 1554 of file TSpider.cxx.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |