112 if (tmin < 0 || tmin >= tmax || nframes < 1)
119 TList *list =
gPad->GetListOfPrimitives();
122 while ((obj = next())) {
123 if (!strcmp(obj->
ClassName(),
"TGeoTrack"))
145 Double_t start[6] = {0, 0, 0, 0, 0, 0};
146 Double_t end[6] = {0, 0, 0, 0, 0, 0};
148 Double_t dlat = 0, dlong = 0, dpsi = 0;
149 Double_t dd[6] = {0, 0, 0, 0, 0, 0};
151 p->EstimateCameraMove(tmin + 5 * dt, tmin + 15 * dt, start, end);
152 for (i = 0; i < 3; i++) {
153 start[i + 3] = 20 + 1.3 * start[i + 3];
154 end[i + 3] = 20 + 0.9 * end[i + 3];
156 for (i = 0; i < 6; i++) {
157 dd[i] = (end[i] - start[i]) / 10.;
160 p->GetViewAngles(dlong, dlat, dpsi);
161 dlong = (-206 - dlong) /
Double_t(nframes);
162 dlat = (126 - dlat) /
Double_t(nframes);
163 dpsi = (75 - dpsi) /
Double_t(nframes);
167 for (i = 0; i < nframes; i++) {
173 for (j = 0; j < 6; j++)
175 p->GrabFocus(1, dlong, dlat, dpsi);
224 for (
Int_t i = 0; i < nd; i++)
233 const Int_t inaxis = 7;
234 const Int_t maxdist = 5;
243 if (px < puxmin - inaxis)
245 if (py > puymin + inaxis)
247 if (px > puxmax + inaxis)
249 if (py < puymax - inaxis)
265 for (i = imin; i < imax; i++) {
274 if (dsegment < dist) {
276 if (dist < maxdist) {
277 gPad->SetSelected(
this);
288 for (
Int_t id = 0;
id < nd;
id++) {
336 SetBits(is_default, is_onelevel, is_all, is_type);
365 return (
char *)info.
Data();
374 if (i < 0 || i >=
np) {
375 Error(
"GetPoint",
"no point %i, indmax=%d", i,
np - 1);
403 if (istart > (
np - 2))
406 if (ip < 0 || ip > (
np - 2))
411 Int_t k = (ip + 1) << 2;
414 for (i = 0; i < 3; i++)
436 if (is_default || is_onelevel || is_all)
441 if (!nd || is_default)
444 for (
Int_t i = 0; i < nd; i++) {
469 if (is_default || is_onelevel || is_all)
474 if (!nd || is_default)
477 for (
Int_t i = 0; i < nd; i++) {
496 if (ip >= 0 && ip <
np - 1) {
500 memcpy(local, point, 3 *
sizeof(
Double_t));
516 if (xndc[0] <
gPad->GetX1() || xndc[0] >
gPad->GetX2())
518 if (xndc[1] <
gPad->GetY1() || xndc[1] >
gPad->GetY2())
520 p.fX =
gPad->XtoPixel(xndc[0]);
521 p.fY =
gPad->YtoPixel(xndc[1]);
549 Double_t seg[6] = {0., 0., 0., 0., 0., 0.};
555 if (imin >= 0 && imin <
np - 1) {
566 gPad->PaintLine3D(&seg[0], &seg[3]);
568 gPad->PaintLine3D(start, end);
576 gPad->PaintLine3D(&seg[0], &seg[3]);
579 gPad->PaintLine3D(&seg[0], &seg[3]);
580 for (ip = imin + 1; ip < imax; ip++) {
583 gPad->PaintLine3D(&seg[0], &seg[3]);
586 gPad->PaintLine3D(start, &
fPoints[(imin + 1) << 2]);
588 for (ip = imin + 1; ip < imax; ip++) {
604 gPad->PaintLine3D(&seg[0], &seg[3]);
605 for (ip = imin + 1; ip <
np - 2; ip++) {
608 gPad->PaintLine3D(&seg[0], &seg[3]);
611 gPad->PaintLine3D(start, &
fPoints[(imin + 1) << 2]);
612 for (ip = imin + 1; ip <
np - 2; ip++) {
619 if (imax < 0 || imax >= (
np - 1))
624 for (ip = 0; ip < imax - 1; ip++) {
627 gPad->PaintLine3D(&seg[0], &seg[3]);
630 for (ip = 0; ip < imax - 1; ip++) {
637 gPad->PaintLine3D(&seg[0], &seg[3]);
651 for (ip = imin; ip < imax; ip++) {
662 printf(
" TGeoTrack%6i : %s ===============================\n",
fId,
GetName());
666 printf(
" production vertex : (%g, %g, %g) at tof=%g\n",
x,
y, z, t);
668 printf(
" Npoints =%6i, last : (%g, %g, %g) at tof=%g\n\n",
np,
x,
y, z, t);
686 return (imax - imin + 1);
695 Int_t nabove, nbelow, middle, midloc;
699 while (nabove - nbelow > 1) {
700 middle = (nabove + nbelow) / 2;
701 midloc = ((middle - 1) << 2) + 3;
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t SetLineWidth
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 np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t SetLineColor
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t SetMarkerStyle
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 type
Option_t Option_t TPoint TPoint const char y1
R__EXTERN TGeoManager * gGeoManager
char * Compress(const char *str)
Remove all blanks from the string str.
virtual void Modify()
Change current line attributes if necessary.
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 void Modify()
Change current marker attributes if necessary.
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Using a TBrowser one can browse all ROOT objects.
void SetParticleName(const char *pname)
TGeoVolume * GetMasterVolume() const
TVirtualGeoPainter * GetGeomPainter()
Make a default painter if none present. Returns pointer to it.
void SetVisLevel(Int_t level=3)
set default level down to which visualization is performed
void SetAnimateTracks(Bool_t flag=kTRUE)
Bool_t GetTminTmax(Double_t &tmin, Double_t &tmax) const
Get time cut for drawing tracks.
const char * GetParticleName() const
void SetTminTmax(Double_t tmin=0, Double_t tmax=999)
Set time cut interval for drawing tracks.
Bool_t IsAnimatingTracks() const
TGeoVolume * GetTopVolume() const
void MasterToTop(const Double_t *master, Double_t *top) const
Convert coordinates from master volume frame to top.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Returns distance to track primitive for picking.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Event treatment.
virtual void Sizeof3D() const
Returns 3D size for the track.
Int_t Size(Int_t &imin, Int_t &imax)
Return the number of points within the time interval specified by TGeoManager class and the correspon...
Int_t SearchPoint(Double_t time, Int_t istart=0) const
Search index of track point having the closest time tag smaller than TIME.
TVirtualGeoTrack * AddDaughter(Int_t id, Int_t pdgcode, TObject *particle=nullptr) override
Add a daughter track to this.
void SetBits(Bool_t is_default=kTRUE, Bool_t is_onelevel=kFALSE, Bool_t is_all=kFALSE, Bool_t is_type=kFALSE)
Set drawing bits for this track.
Int_t GetPoint(Int_t i, Double_t &x, Double_t &y, Double_t &z, Double_t &t) const override
Get coordinates for point I on the track.
~TGeoTrack() override
Destructor.
void Paint(Option_t *option="") override
Paint this track (and descendents) with current attributes.
void Browse(TBrowser *b) override
How-to-browse for a track.
void PaintCollect(Double_t time, Double_t *box) override
Paint track and daughters.
TGeoTrack()
Default constructor.
void PaintMarker(Double_t *point, Option_t *option="")
Paint current point of the track as marker.
void ResetTrack() override
Reset data for this track.
void PaintTrack(Option_t *option="") override
Paint this track with its current attributes.
virtual void AnimateTrack(Double_t tmin=0, Double_t tmax=5E-8, Double_t nframes=200, Option_t *option="/*")
Draw animation of this track.
void PaintCollectTrack(Double_t time, Double_t *box) override
Paint just this track.
void Draw(Option_t *option="") override
Draw this track over-imposed on a geometry, according to option.
void AddPoint(Double_t x, Double_t y, Double_t z, Double_t t) override
Add a point on the track.
char * GetObjectInfo(Int_t px, Int_t py) const override
Get some info about the track.
void Print(Option_t *option="") const override
Print some info about the track.
void Draw(Option_t *option="") override
draw top volume according to option
TObject * Remove(TObject *obj) override
Remove object from the list.
Int_t GetEntriesFast() const
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
void Delete(Option_t *option="") override
Remove all objects from the array AND delete all heap based objects.
Mother of all ROOT objects.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual void AppendPad(Option_t *option="")
Append graphics object to current pad.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void ToLower()
Change string to lower-case.
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual void WCtoNDC(const Float_t *pw, Float_t *pn)=0
Abstract class for geometry painters.
virtual void AddTrackPoint(Double_t *point, Double_t *box, Bool_t reset=kFALSE)=0
Base class for user-defined tracks attached to a geometry.
TVirtualGeoTrack * fParent
void SetParent(TVirtualGeoTrack *parent)
TVirtualGeoTrack * GetDaughter(Int_t index) const
Bool_t IsInTimeRange() const
True if track TOF range overlaps with time interval of TGeoManager.
const char * GetName() const override
Get the PDG name.
Int_t GetNdaughters() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)