FEDRA emulsion software from the OPERA Collaboration
EdbBeamGen Class Reference

#include <EdbBrickGen.h>

Inheritance diagram for EdbBeamGen:
Collaboration diagram for EdbBeamGen:

Public Member Functions

 EdbBeamGen ()
 
EdbTrackPNextTrack (int id=0)
 
void SetAngularGaus (float tx0, float stx, float ty0, float sty)
 
void SetM (float mass)
 
void SetP (float p, float sp=0)
 
void SetPositionGaus (float x0, float sx, float y0, float sy, float z0=0, float sz=0)
 
 ~EdbBeamGen ()
 

Public Attributes

EdbLayereLimits
 
Float_t eMass
 
Float_t eP0
 
Float_t eSigmaP
 
Float_t eSigmaTX
 
Float_t eSigmaTY
 
Float_t eSigmaX
 
Float_t eSigmaY
 
Float_t eSigmaZ
 
Float_t eTX0
 
Float_t eTY0
 
Float_t eX0
 
Float_t eY0
 
Float_t eZ0
 

Constructor & Destructor Documentation

◆ EdbBeamGen()

EdbBeamGen::EdbBeamGen ( )

◆ ~EdbBeamGen()

EdbBeamGen::~EdbBeamGen ( )
inline
32{}

Member Function Documentation

◆ NextTrack()

EdbTrackP * EdbBeamGen::NextTrack ( int  id = 0)
33{
34 // return the next track generated according to the given distribution and inside the limits
35 // id is assigned as track::eID
36
37 float x=0,y=0,z=0,tx=0,ty=0;
38 EdbTrackP *tr = new EdbTrackP();
39
40 int maxcycle=10000;
41 int i;
42 for(i=0; i<maxcycle; i++) {
43 gRandom->Rannor(x,y);
44 x = eX0 + eSigmaX*x;
45 y = eY0 + eSigmaY*y;
46 z = eZ0 + eSigmaZ*gRandom->Rndm();
47 if(!eLimits) break;
48 if(eLimits->IsInside(x,y)) break;
49 }
50 if(i>maxcycle-2) printf("WARNING: EdbBeamGen::NextTrack - infinite cycle\n");
51
52 for(i=0; i<maxcycle; i++) {
53 gRandom->Rannor(tx,ty);
54 tx = eTX0 + eSigmaTX*tx;
55 ty = eTY0 + eSigmaTY*ty;
56 if(tx*tx+ty*ty<1.) break;
57 }
58 if(i>maxcycle-2) printf("WARNING: EdbBeamGen::NextTrack - infinite cycle\n");
59
60 tr->Set(id, x, y, tx, ty, 1, 0);
61
62 tr->SetZ(z);
63 tr->SetP(eP0);
64 tr->SetM(eMass);
65 return tr;
66}
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
Float_t eTX0
Definition: EdbBrickGen.h:25
Float_t eMass
Definition: EdbBrickGen.h:18
Float_t eP0
Definition: EdbBrickGen.h:28
Float_t eTY0
Definition: EdbBrickGen.h:26
Float_t eSigmaTX
Definition: EdbBrickGen.h:25
Float_t eZ0
Definition: EdbBrickGen.h:23
Float_t eSigmaZ
Definition: EdbBrickGen.h:23
Float_t eSigmaTY
Definition: EdbBrickGen.h:26
Float_t eX0
Definition: EdbBrickGen.h:21
Float_t eY0
Definition: EdbBrickGen.h:22
Float_t eSigmaY
Definition: EdbBrickGen.h:22
Float_t eSigmaX
Definition: EdbBrickGen.h:21
EdbLayer * eLimits
Definition: EdbBrickGen.h:19
bool IsInside(float x, float y, float z)
Definition: EdbLayer.cxx:127
Definition: EdbPattern.h:113

◆ SetAngularGaus()

void EdbBeamGen::SetAngularGaus ( float  tx0,
float  stx,
float  ty0,
float  sty 
)
inline
37 { eTX0=tx0; eSigmaTX=stx; eTY0=ty0; eSigmaTY=sty; }

◆ SetM()

void EdbBeamGen::SetM ( float  mass)
inline
39{ eMass=mass;}
float mass
Definition: check_vertex.C:21

◆ SetP()

void EdbBeamGen::SetP ( float  p,
float  sp = 0 
)
inline
40{ eP0=p; eSigmaP=sp; }
Float_t eSigmaP
Definition: EdbBrickGen.h:28
p
Definition: testBGReduction_AllMethods.C:8

◆ SetPositionGaus()

void EdbBeamGen::SetPositionGaus ( float  x0,
float  sx,
float  y0,
float  sy,
float  z0 = 0,
float  sz = 0 
)
inline
35 { eX0=x0; eSigmaX=sx; eY0=y0; eSigmaY=sy; eZ0=z0; eSigmaZ=sz; }
brick z0
Definition: RecDispMC.C:106

Member Data Documentation

◆ eLimits

EdbLayer* EdbBeamGen::eLimits

◆ eMass

Float_t EdbBeamGen::eMass

◆ eP0

Float_t EdbBeamGen::eP0

◆ eSigmaP

Float_t EdbBeamGen::eSigmaP

◆ eSigmaTX

Float_t EdbBeamGen::eSigmaTX

◆ eSigmaTY

Float_t EdbBeamGen::eSigmaTY

◆ eSigmaX

Float_t EdbBeamGen::eSigmaX

◆ eSigmaY

Float_t EdbBeamGen::eSigmaY

◆ eSigmaZ

Float_t EdbBeamGen::eSigmaZ

◆ eTX0

Float_t EdbBeamGen::eTX0

◆ eTY0

Float_t EdbBeamGen::eTY0

◆ eX0

Float_t EdbBeamGen::eX0

◆ eY0

Float_t EdbBeamGen::eY0

◆ eZ0

Float_t EdbBeamGen::eZ0

The documentation for this class was generated from the following files: