ROBAST logo
ROBAST » INCLUDE » ARayShooter

class ARayShooter: public TObject


ARayShooter creates an array of photons to be traced.

Three static member functions create aligned initial photons as below. By default, the start coordinates is at (x, y, z) = (0, 0, 0) and emitted direction is in parallel to z axis. Users can change these values using TGeoRotation and TGeoTranslation.

output of htmldoc/MACRO_ARayShooter_1.gif
{
  Double_t nm = AOpticsManager::nm();
  Double_t  m = AOpticsManager::m();

  ARayArray* rays = ARayShooter::Circle(400*nm, 100*m, 20, 6, 0, 0);
  TGraph* circle = new TGraph;
  circle->SetTitle("Circle(400*nm, 100*m, 20, 6, 0, 0);X (m);Y (m)");
  TObjArray* running = rays->GetRunning();

  for(Int_t i = 0; i <= running->GetLast(); i++){
    ARay* ray = (ARay*)(*running)[i];
    if(!ray) continue;
    Double_t p[4];
    ray->GetLastPoint(p);
    circle->SetPoint(i, p[0], p[1]);
  }

  rays = ARayShooter::Rectangle(400*nm, 100*m, 80*m, 20, 10, 0, 0);
  TGraph* rectangle = new TGraph;
  rectangle->SetTitle("Rectangle(400*nm, 100*m, 80*m, 20, 10, 0, 0);X(m);Y(m)");
  running = rays->GetRunning();

  for(Int_t i = 0; i <= running->GetLast(); i++){
    ARay* ray = (ARay*)(*running)[i];
    if(!ray) continue;
    Double_t p[4];
    ray->GetLastPoint(p);
    rectangle->SetPoint(i, p[0], p[1]);
  }

  rays = ARayShooter::Square(400*nm, 90*m, 30, 0, 0);
  TGraph* square = new TGraph;
  square->SetTitle("Square(400*nm, 90*m, 30, 0, 0);X (m);Y (m)");
  running = rays->GetRunning();

  for(Int_t i = 0; i <= running->GetLast(); i++){
    ARay* ray = (ARay*)(*running)[i];
    if(!ray) continue;
    Double_t p[4];
    ray->GetLastPoint(p);
    square->SetPoint(i, p[0], p[1]);
  }

  AOpticsManager* manager = new AOpticsManager("manager", "manager");
  // Make the world
  TGeoBBox* worldbox = new TGeoBBox("worldbox", 100*m, 100*m, 100*m);
  AOpticalComponent* world = new AOpticalComponent("world", worldbox);
  manager->SetTopVolume(world);

  // Top volume
  TGeoBBox* topbox = new TGeoBBox("topbox", 100*m, 100*m, 100*m);
  AOpticalComponent* top = new AOpticalComponent("top", topbox);

  TGeoBBox* focal_box = new TGeoBBox("focal_box",45*m, 45*m, 1*m);
  AFocalSurface* focal = new AFocalSurface("focal", focal_box);
  top->AddNode(focal, 1, new TGeoTranslation(0, 0, 11*m));
  world->AddNode(top, 1);
  manager->CloseGeometry();

  rays = ARayShooter::RandomCone(400*nm, 45*m, 10*m, 1000, 0);
  TGraph* cone = new TGraph;
  cone->SetTitle("RandomCone(400*nm, 45*m, 10*m, 1000, 0, 0);X (m);Y (m)");
  manager->TraceNonSequential(*rays);
  running = rays->GetFocused();

  for(Int_t i = 0; i <= running->GetLast(); i++){
    ARay* ray = (ARay*)(*running)[i];
    if(!ray) continue;
    Double_t p[4];
    ray->GetLastPoint(p);
    cone->SetPoint(i, p[0], p[1]);
  }

  TCanvas* can = new TCanvas("can", "can", 400, 1600);
  can->Divide(1, 4, 1e-10, 1e-10);
  can->cd(1);
  circle->Draw("ap");
  can->cd(2);
  rectangle->Draw("ap");
  can->cd(3);
  square->Draw("ap");
  can->cd(4);
  cone->Draw("ap");

  return can;
}

Function Members (Methods)

public:
virtual~ARayShooter()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
ARayShooter()
ARayShooter(const ARayShooter&)
virtual voidTObject::Browse(TBrowser* b)
ULong_tTObject::CheckedHash()
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 TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
Bool_tTObject::HasInconsistentHash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
ARayShooter&operator=(const ARayShooter&)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
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)
virtual Int_tTObject::Read(const char* name)
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)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector& insp) const
static ARayArray*Square(Double_t lambda, Double_t d, Int_t n, TGeoRotation* rot = 0, TGeoTranslation* tr = 0, TVector3* v = 0)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
virtual Bool_tCheckTObjectHashConsistency() const

Data Members

public:
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TObject::(anonymous)TObject::kInconsistent
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EDeprecatedStatusBitsTObject::kObjInCanvas
static TObject::(anonymous)TObject::kOverwrite
static TObject::(anonymous)TObject::kSingleKey
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

ARayShooter()
 Default constructor
~ARayShooter()
{}
ARayArray* Circle(Double_t lambda, Double_t rmax, Int_t nr, Int_t nphi, TGeoRotation* rot = 0, TGeoTranslation* tr = 0, TVector3* v = 0)
 Create initial photons aligned in concentric circles
ARayArray* RandomCircle(Double_t lambda, Double_t rmax, Int_t n, TGeoRotation* rot = 0, TGeoTranslation* tr = 0, TVector3* v = 0)
ARayArray* RandomCone(Double_t lambda, Double_t r, Double_t d, Int_t n, TGeoRotation* rot = 0, TGeoTranslation* tr = 0)
 Create initial photons aligned in a cone. Direction is random
 Start position is at the origin.
 Arrival position is inside the circle of radius r at z = d
ARayArray* RandomRectangle(Double_t lambda, Double_t dx, Double_t dy, Int_t n, TGeoRotation* rot = 0, TGeoTranslation* tr = 0, TVector3* v = 0)
 Create initial photons randomly distributed in a rectangle
ARayArray* RandomSphere(Double_t lambda, Int_t n, TGeoTranslation* tr = 0)
ARayArray* RandomSphericalCone(Double_t lambda, Int_t n, Double_t theta, TGeoRotation* rot = 0, TGeoTranslation* tr = 0)
ARayArray* RandomSquare(Double_t lambda, Double_t d, Int_t n, TGeoRotation* rot = 0, TGeoTranslation* tr = 0, TVector3* v = 0)
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)
 Create initial photons aligned in rectangles
ARayArray* Square(Double_t lambda, Double_t d, Int_t n, TGeoRotation* rot = 0, TGeoTranslation* tr = 0, TVector3* v = 0)
 Create initial photons aligned in squares
ARayShooter()