Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:11:55

0001 // @(#)root/geom:$Id$
0002 // Author: Andrei Gheata   2003/04/10
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT_TGeoTrack
0013 #define ROOT_TGeoTrack
0014 
0015 #include "TVirtualGeoTrack.h"
0016 
0017 /////////////////////////////////////////////////////////////////////////////
0018 // TGeoTrack - Tracks attached to a geometry.                              //
0019 //             Tracks are 3D objects made of points and they store a       //
0020 //             pointer to a TParticle. The geometry manager holds a list   //
0021 //             of all tracks that will be deleted on destruction of        //
0022 //             gGeoManager.                                                //
0023 //                                                                         //
0024 /////////////////////////////////////////////////////////////////////////////
0025 
0026 class TGeoTrack : public TVirtualGeoTrack {
0027 public:
0028    enum EGeoParticleActions {
0029       kGeoPDefault = BIT(7),
0030       kGeoPOnelevel = BIT(8),
0031       kGeoPAllDaughters = BIT(9),
0032       kGeoPType = BIT(10),
0033       kGeoPDrawn = BIT(11)
0034    };
0035 
0036 private:
0037    Int_t fPointsSize; // capacity of points array
0038    Int_t fNpoints;    // number of stored points
0039    Double_t *fPoints; //[fNpoints] array of points (x,y,z,t) belonging to this track
0040 
0041 protected:
0042    TGeoTrack(const TGeoTrack &) = delete;
0043    TGeoTrack &operator=(const TGeoTrack &) = delete;
0044 
0045 public:
0046    TGeoTrack();
0047    TGeoTrack(Int_t id, Int_t pdgcode, TVirtualGeoTrack *parent = nullptr, TObject *particle = nullptr);
0048    ~TGeoTrack() override;
0049 
0050    TVirtualGeoTrack *AddDaughter(Int_t id, Int_t pdgcode, TObject *particle = nullptr) override;
0051    Int_t AddDaughter(TVirtualGeoTrack *other) override;
0052    void AddPoint(Double_t x, Double_t y, Double_t z, Double_t t) override;
0053    virtual void
0054    AnimateTrack(Double_t tmin = 0, Double_t tmax = 5E-8, Double_t nframes = 200, Option_t *option = "/*"); // *MENU*
0055    void Browse(TBrowser *b) override;
0056    Int_t DistancetoPrimitive(Int_t px, Int_t py) override;
0057    void Draw(Option_t *option = "") override; // *MENU*
0058    void ExecuteEvent(Int_t event, Int_t px, Int_t py) override;
0059    char *GetObjectInfo(Int_t px, Int_t py) const override;
0060    Int_t GetNpoints() const override { return (fNpoints >> 2); }
0061    Int_t GetPoint(Int_t i, Double_t &x, Double_t &y, Double_t &z, Double_t &t) const override;
0062    const Double_t *GetPoint(Int_t i) const override;
0063    Int_t GetPoint(Double_t tof, Double_t *point, Int_t istart = 0) const;
0064    Bool_t IsFolder() const override { return (GetNdaughters() > 0) ? kTRUE : kFALSE; }
0065    void Paint(Option_t *option = "") override;
0066    void PaintCollect(Double_t time, Double_t *box) override;
0067    void PaintCollectTrack(Double_t time, Double_t *box) override;
0068    void PaintMarker(Double_t *point, Option_t *option = "");
0069    void PaintTrack(Option_t *option = "") override;
0070    void Print(Option_t *option = "") const override; // *MENU*
0071    void ResetTrack() override;
0072    Int_t SearchPoint(Double_t time, Int_t istart = 0) const;
0073    void
0074    SetBits(Bool_t is_default = kTRUE, Bool_t is_onelevel = kFALSE, Bool_t is_all = kFALSE, Bool_t is_type = kFALSE);
0075    Int_t Size(Int_t &imin, Int_t &imax);
0076    virtual void Sizeof3D() const;
0077 
0078    ClassDefOverride(TGeoTrack, 1) // geometry tracks class
0079 };
0080 
0081 #endif