Int_t namec1[MAXME1];
} Gctpol_t;
+/************************************************************************
+ * *
+ * Commons for GEANE *
+ * *
+ ************************************************************************/
+
+//------------ERTRIO
+// INTEGER MXPRED
+// PARAMETER (MXPRED = 10)
+// DOUBLE PRECISION ERDTRP
+// REAL ERRIN, ERROUT, ERTRSP, ERXIN, ERXOUT, ERPIN,
+// + ERPOUT
+// INTEGER NEPRED, INLIST, ILPRED, IEPRED
+// COMMON /ERTRIO/ ERDTRP(5,5,MXPRED), ERRIN(15), ERROUT(15,MXPRED),
+// + ERTRSP(5,5,MXPRED), ERXIN( 3), ERXOUT( 3,MXPRED),
+// + ERPIN(3), ERPOUT(3,MXPRED), NEPRED,INLIST,ILPRED,
+// + IEPRED(MXPRED)
+//
+
+#define MXPRED 10
+typedef struct {
+ Double_t erdtrp[MXPRED*5*5];
+ Float_t errin[5];
+ Float_t errout[MXPRED*15];
+ Float_t ertrsp[MXPRED*5*5];
+ Float_t erxin[3];
+ Float_t erxout[MXPRED*3];
+ Float_t erpin[3];
+ Float_t erpout[MXPRED*3];
+ Int_t nepred;
+ Int_t inlist;
+ Int_t ilpred;
+ Int_t iepred;
+} Ertrio_t;
+
+//-----------EROTPS
+// CHARACTER*8 CHOPTI
+// LOGICAL LEEXAC, LELENG, LEONLY, LEPLAN, LEPOIN, LEVOLU
+// REAL ERPLI, ERPLO, ERLENG
+// INTEGER NAMEER, NUMVER, IOVLER
+// COMMON /EROPTS/ ERPLI(3,2), ERPLO(3,4,MXPRED), ERLENG(MXPRED),
+// + NAMEER(MXPRED), NUMVER(MXPRED), IOVLER(MXPRED),
+// + LEEXAC, LELENG, LEONLY, LEPLAN, LEPOIN, LEVOLU
+// COMMON /EROPTC/CHOPTI
+
+typedef struct {
+ Float_t erpli[3*2];
+ Float_t erplo[MXPRED*3*4];
+ Float_t erleng[MXPRED];
+ Int_t nameer[MXPRED];
+ Int_t numver[MXPRED];
+ Int_t iovler[MXPRED];
+ Bool_t leexac;
+ Bool_t leleng;
+ Bool_t leonly;
+ Bool_t leplan;
+ Bool_t lepoin;
+ Bool_t levolu;
+} Eropts_t;
+
+typedef struct {
+ char chopti[8];
+} Eroptc_t;
+
+//-------ERWORK
+// DOUBLE PRECISION EI, EF, ASDSC
+// COMMON /ERWORK/ EI(15), EF(15), ASDSC(5,5),
+// + XI(3), PPI(3), HI(9),
+// + XF(3), PF(3), HF(9),
+// + CHTR, DEDX2, BACKTR, CUTEK, TLGCM2, TLRAD
+
+typedef struct {
+ Double_t ei[15];
+ Double_t ef[15];
+ Double_t asdsc[5*5];
+ Float_t xi[3];
+ Float_t ppi[3];
+ Float_t hi[9];
+ Float_t xf[3];
+ Float_t pf[3];
+ Float_t hf[9];
+ Float_t chtr;
+ Float_t dedx2;
+ Float_t backtr;
+ Float_t cutek;
+ Float_t tlgcm2;
+ Float_t tlrad;
+} Erwork_t;
+
+/************************************************************************
+ * *
+ * Commons for GEANE *
+ * *
+ ************************************************************************/
class TGeant3 : public AliMC {
Gctrak_t *fGctrak;
+ // commons for GEANE
+ Ertrio_t *fErtrio;
+ Eropts_t *fEropts;
+ Eroptc_t *fEroptc;
+ Erwork_t *fErwork;
+
+ enum {kMaxParticles = 100};
+
+ Int_t fNPDGCodes;
+
+ Int_t fPDGCode[kMaxParticles];
public:
TGeant3();
void GeomIter();
Int_t CurrentMaterial(Float_t &a, Float_t &z, Float_t &dens, Float_t &radl, Float_t &absl) const;
Int_t NextVolUp(Text_t *name, Int_t ©);
- Int_t CurrentVol(Text_t *name, Int_t ©) const;
- Int_t CurrentVolOff(Int_t off, Text_t *name, Int_t ©) const;
+ Int_t CurrentVolID(Int_t ©) const;
+ Int_t CurrentVolOffID(Int_t off, Int_t ©) const;
+ const char* CurrentVolName() const;
+ const char *CurrentVolOffName(Int_t off) const;
Int_t VolId(Text_t *name) const;
+ Int_t IdFromPDG(Int_t pdg) const;
+ Int_t PDGFromId(Int_t pdg) const;
+ void DefineParticles();
const char* VolName(Int_t id) const;
- void TrackPosition(Float_t *xyz) const;
- void TrackMomentum(Float_t *xyz) const;
+ Float_t Xsec(char*, Float_t, Int_t, Int_t);
+ void TrackPosition(TLorentzVector &xyz) const;
+ void TrackMomentum(TLorentzVector &xyz) const;
Int_t NofVolumes() const;
Float_t TrackTime() const;
Float_t TrackCharge() const;
Float_t TrackStep() const;
Float_t TrackLength() const;
Int_t TrackPid() const;
- Bool_t TrackInside() const;
- Bool_t TrackEntering() const;
- Bool_t TrackExiting() const;
- Bool_t TrackOut() const;
- Bool_t TrackDisappear() const;
- Bool_t TrackStop() const;
- Bool_t TrackAlive() const;
+ Bool_t IsTrackInside() const;
+ Bool_t IsTrackEntering() const;
+ Bool_t IsTrackExiting() const;
+ Bool_t IsTrackOut() const;
+ Bool_t IsTrackDisappeared() const;
+ Bool_t IsTrackStop() const;
+ Bool_t IsTrackAlive() const;
Int_t NSecondaries() const;
Int_t CurrentEvent() const;
void ProdProcess(char*) const;
void SetMaxStep(Float_t maxstep);
void SetMaxNStep(Int_t maxnstp);
Int_t GetMaxNStep() const;
- void GetParticle(const Int_t ipart, char *name, Float_t &mass) const;
+ // void GetParticle(const Int_t pdg, char *name, Float_t &mass) const;
virtual Int_t GetMedium() const;
virtual Float_t Edep() const;
virtual Float_t Etot() const;
virtual Float_t* Q() const {return fZq;}
+ // Access to GEANE commons
+
+ virtual Ertrio_t* Ertrio() const {return fErtrio;}
+ virtual Eropts_t* Eropts() const {return fEropts;}
+ virtual Eroptc_t* Eroptc() const {return fEroptc;}
+ virtual Erwork_t* Erwork() const {return fErwork;}
+
+
+
// functions from GBASE
virtual void Gpcxyz();
virtual void Ggclos();
virtual void Gsxyz();
virtual void Gtrack();
virtual void Gtreve();
+ virtual void Gtreve_root();
virtual void Grndm(Float_t *rvec, const Int_t len) const;
virtual void Grndmq(Int_t &is1, Int_t &is2, const Int_t iseq, const Text_t *chopt);
virtual void Vname(const char *name, char *vname);
virtual void InitLego();
+
+ // Routines from GEANE
+
+ virtual void Ertrgo();
+ virtual void Ertrak(const Float_t *const x1, const Float_t *const p1,
+ const Float_t *x2, const Float_t *p2,
+ Int_t ipa, Option_t *chopt);
ClassDef(TGeant3,1) //C++ interface to Geant basic routines
};