ROOT logo
// $Id: AGeoBezierPcon.h 10 2010-11-28 06:35:46Z oxon $
// Author: Akira Okumura 2011/07/08

/******************************************************************************
 * Copyright (C) 2006-, Akira Okumura                                         *
 * All rights reserved.                                                       *
 *****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
//
// AGeoBezierPcon
//
// Geometry class for Pcon-like volume, but the side surfaces are defined by
// a Bezier curve (http://en.wikipedia.org/wiki/Bˇzier_curve)
//
///////////////////////////////////////////////////////////////////////////////

#ifndef A_GEO_BEZIER_PCON_H
#define A_GEO_BEZIER_PCON_H

#ifndef ROOT_TGeoPcon
#include "TGeoPcon.h"
#endif

#ifndef ROOT_TVector2
#include "TVector2.h"
#endif

class AGeoBezierPcon : public TGeoPcon {
protected:
   Double_t fLength; // fDZ will be fLength/2
   Double_t fR1; // Half of the upper aperture
   Double_t fR2; // Half of the lower aperture
   TVector2 fP1; // Relative coordinates of the control point 1
   TVector2 fP2; // Relative coordinates of the control point 2
   Int_t    fNcontrol; // Number of control points (0, 1, or 2)

public:
   AGeoBezierPcon();
   AGeoBezierPcon(Double_t phi, Double_t dphi, Int_t nz, Double_t r1, Double_t r2, Double_t dz);
   AGeoBezierPcon(const char* name, Double_t phi, Double_t dphi, Int_t nz, Double_t r1, Double_t r2, Double_t dz);
   virtual ~AGeoBezierPcon();

   virtual void Bezier(Double_t t, Double_t& r, Double_t& z);
   virtual void SetControlPoints(Double_t r1, Double_t z1);
   virtual void SetControlPoints(Double_t r1, Double_t z1, Double_t r2, Double_t z2);
   virtual void SetSections();

   ClassDef(AGeoBezierPcon, 1)
};

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