ROBAST logo
// Author: Akira Okumura <mailto:oxon@mac.com>
/******************************************************************************
 * Copyright (C) 2006-, Akira Okumura                                         *
 * All rights reserved.                                                       *
 *****************************************************************************/

#ifndef A_RAY_SHOOTER_H
#define A_RAY_SHOOTER_H

#include "TGeoMatrix.h"
#include "TMath.h"
#include "TVector3.h"

#include "ARayArray.h"

///////////////////////////////////////////////////////////////////////////////
//
// ARayShooter
//
// Ray shooter
//
///////////////////////////////////////////////////////////////////////////////

class ARayShooter : public TObject {
 private:
 public:
  ARayShooter();
  virtual ~ARayShooter();

  static ARayArray* Circle(Double_t lambda, Double_t rmax, Int_t nr, Int_t nphi,
                           TGeoRotation* rot = 0, TGeoTranslation* tr = 0,
                           TVector3* v = 0);
  static ARayArray* RandomCircle(Double_t lambda, Double_t rmax, Int_t n,
                                 TGeoRotation* rot = 0, TGeoTranslation* tr = 0,
                                 TVector3* v = 0);
  static ARayArray* RandomCone(Double_t lambda, Double_t r, Double_t d, Int_t n,
                               TGeoRotation* rot = 0, TGeoTranslation* tr = 0);
  static ARayArray* RandomRectangle(Double_t lambda, Double_t dx, Double_t dy,
                                    Int_t n, TGeoRotation* rot = 0,
                                    TGeoTranslation* tr = 0, TVector3* v = 0);
  static ARayArray* RandomSphere(Double_t lambda, Int_t n,
                                 TGeoTranslation* tr = 0);
  static ARayArray* RandomSphericalCone(Double_t lambda, Int_t n,
                                        Double_t theta, TGeoRotation* rot = 0,
                                        TGeoTranslation* tr = 0);
  static ARayArray* RandomSquare(Double_t lambda, Double_t d, Int_t n,
                                 TGeoRotation* rot = 0, TGeoTranslation* tr = 0,
                                 TVector3* v = 0);
  static ARayArray* Rectangle(Double_t lambda, Double_t dx, Double_t dy,
                              Int_t nx, Int_t ny, TGeoRotation* rot = 0,
                              TGeoTranslation* tr = 0, TVector3* v = 0);
  static ARayArray* Square(Double_t lambda, Double_t d, Int_t n,
                           TGeoRotation* rot = 0, TGeoTranslation* tr = 0,
                           TVector3* v = 0);

  ClassDef(ARayShooter, 1)
};

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