ROOT logo
// @(#)root/eve:$Id: TEveJetCone.h 28214 2009-04-15 11:32:25Z matevz $
// Author: Matevz Tadel, Jochen Thaeder 2009

/*************************************************************************
 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TEveJetCone
#define ROOT_TEveJetCone

#include "TEveElement.h"
#include "TEveVSDStructs.h"
#include "TAttBBox.h"

class TEveJetCone : public TEveElementList,
                    public TAttBBox
{
   friend class TEveJetConeGL;

private:
   TEveJetCone(const TEveJetCone&);            // Not implemented
   TEveJetCone& operator=(const TEveJetCone&); // Not implemented

   void    FillTEveVectorFromEtaPhi( TEveVector &vec, const Float_t& eta, const Float_t& phi );
   Float_t GetArcCosConeOpeningAngle( const TEveVector& axis, const TEveVector& contour );

protected:
   typedef std::vector<TEveVector>        vTEveVector_t;
   typedef vTEveVector_t::iterator        vTEveVector_i;
   typedef vTEveVector_t::const_iterator  vTEveVector_ci;

   TEveVector      fApex;             // Apex of the cone, initialized to ( 0., 0., 0. )
   vTEveVector_t   fBasePoints;       // List of contour points
   TEveVector      fCylinderBorder;   // Border of Barrel/Cylinder to cut the cone
   Float_t         fThetaC;           // Angle between axis and  the edge of top-side of cylinder

public:
   TEveJetCone(const Text_t* n="TEveJetCone", const Text_t* t="");
   virtual ~TEveJetCone() {}

   void SetApex(const TEveVector& a)                      { fApex = a; }  // Sets apex of cone
   void SetCylinder( const Float_t& r, const Float_t& z ) {
      fCylinderBorder.Set( r, 0.f, z ); fThetaC = fCylinderBorder.Theta(); } // Set border cylinder

   Int_t AddCone(Float_t eta, Float_t phi, Float_t coneRadius, Float_t height=-1);
   Int_t AddEllipticCone(Float_t eta, Float_t phi, Float_t reta, Float_t rphi, Float_t height=-1);

   virtual Bool_t  CanEditMainTransparency() const { return kTRUE; }

   // For TAttBBox:
   virtual void ComputeBBox();
   // If painting is needed:
   virtual void Paint(Option_t* option="");

   ClassDef(TEveJetCone, 0); // Short description.
};

#endif
 TEveJetCone.h:1
 TEveJetCone.h:2
 TEveJetCone.h:3
 TEveJetCone.h:4
 TEveJetCone.h:5
 TEveJetCone.h:6
 TEveJetCone.h:7
 TEveJetCone.h:8
 TEveJetCone.h:9
 TEveJetCone.h:10
 TEveJetCone.h:11
 TEveJetCone.h:12
 TEveJetCone.h:13
 TEveJetCone.h:14
 TEveJetCone.h:15
 TEveJetCone.h:16
 TEveJetCone.h:17
 TEveJetCone.h:18
 TEveJetCone.h:19
 TEveJetCone.h:20
 TEveJetCone.h:21
 TEveJetCone.h:22
 TEveJetCone.h:23
 TEveJetCone.h:24
 TEveJetCone.h:25
 TEveJetCone.h:26
 TEveJetCone.h:27
 TEveJetCone.h:28
 TEveJetCone.h:29
 TEveJetCone.h:30
 TEveJetCone.h:31
 TEveJetCone.h:32
 TEveJetCone.h:33
 TEveJetCone.h:34
 TEveJetCone.h:35
 TEveJetCone.h:36
 TEveJetCone.h:37
 TEveJetCone.h:38
 TEveJetCone.h:39
 TEveJetCone.h:40
 TEveJetCone.h:41
 TEveJetCone.h:42
 TEveJetCone.h:43
 TEveJetCone.h:44
 TEveJetCone.h:45
 TEveJetCone.h:46
 TEveJetCone.h:47
 TEveJetCone.h:48
 TEveJetCone.h:49
 TEveJetCone.h:50
 TEveJetCone.h:51
 TEveJetCone.h:52
 TEveJetCone.h:53
 TEveJetCone.h:54
 TEveJetCone.h:55
 TEveJetCone.h:56
 TEveJetCone.h:57
 TEveJetCone.h:58
 TEveJetCone.h:59
 TEveJetCone.h:60
 TEveJetCone.h:61
 TEveJetCone.h:62