-#include <TGenerator.h>
#include "THBTprocessor.h"
+//_____________________________________________________________________________
+///////////////////////////////////////////////////////////////////////////////
+// //
+// class THBTprocessor //
+// //
+// Wrapper class to HBT processor fortran code. //
+// For more information see AliGenHBTprocessor class //
+// HBT processor is written by Lanny Ray //
+// //
+// Comunication is done via COMMON BLOCKS declared in HBTprocCOMMON.h //
+// using cfortran.h routines //
+// User should use class AliGenHBTprocessor and all their interface //
+// see there for more description //
+// //
+// Wrapper class written by //
+// Piotr Krzysztof Skowronski (Piotr.Skowronski@cern.ch) //
+// //
+///////////////////////////////////////////////////////////////////////////////
+
+
#include <TParticle.h>
#include <TMath.h>
extern "C" void type_of_call hbtprocessor();
extern "C" void type_of_call ctest();
-//Wrapper class to HBT processor fortran code.
-//For more information see AliGenHBTprocessor class
-//HBT processor is written by Lanny Ray
-//Wrapper class written by Piotr Krzysztof Skowronski (Piotr.Skowronski@cern.ch)
-//
/*************************************************/
THBTprocessor::THBTprocessor()// it is better not to intialize it:TGenerator("THBTprocessor","THBTprocessor")
fParticles = 0;
Initialize(); //Enforce initialization (cleaning all commons)
}
+/*****************************************************************************************/
-void THBTprocessor::GenerateEvent()
+void THBTprocessor::GenerateEvent() const
{
//Starts processing
- cout<<endl<<"Entering Fortran"<<endl;
+ Info("GenerateEvent","Entering Fortran");
ctest();
hbtprocessor();
- cout<<endl<<"Exited Fortran"<<endl;
+ Info("GenerateEvent","Exited Fortran");
if(PARAMETERS.errorcode)
{
- Fatal("THBTprocessor::GenerateEvent()","HBT Processor (fortran part) finished with errors\n \
- See hbt_simulation.out file for more detailed information");
+ TString message("HBT Processor (fortran part) finished with errors\n");
+ message+="Error code is ";
+ message+=PARAMETERS.errorcode;
+ message+="\n";
+ message+="See hbt_simulation.out file for more detailed information.";
+ Fatal("GenerateEvent","%s",message.Data());
}
else
- cout<<endl<<"GOOD ! HBT Processor finished without errors"<<endl;
- cout<<"PARAMETERS.errorcode= "<<PARAMETERS.errorcode<<endl;
-
+ Info("GenerateEvent","GOOD ! HBT Processor finished without errors");
}
/*****************************************************************************************/
-void THBTprocessor::Initialize()
+
+void THBTprocessor::Initialize() const
{
//IT RESETS ALL THE PREVIOUS SETTINGS
//Call this method to set default values in PARAMETERS & MESH
//and zero other common block
- if(gDebug) cout<<"\nHBT PROCESSOR::Initialize() Setting Default valuses in all COMMON BLOCKS"<<endl;
+ if(gDebug)
+ Info("Initialize","Setting Default valuses in all COMMON BLOCKS");
PARAMETERS.ref_control = 2;
PARAMETERS.switch_1d = 3;
{
//Copy particle data into TClonesArray
if (particles == 0) return 0;
- TClonesArray &Particles = *particles;
- Particles.Clear();
+ TClonesArray &rparticles = *particles;
+ rparticles.Clear();
Int_t nrpart = 0;
for (Int_t i=0; i < TRK_MAXLEN; i++)
// Float_t pE = TRACK.trk_E[i];
Float_t mass = PARTICLE.part_mass[TRACK1.trk_ge_pid[i]];
- new(Particles[nrpart++]) TParticle(0,0,0,0,0,0,px,py,pz,
+ new(rparticles[nrpart++]) TParticle(0,0,0,0,0,0,px,py,pz,
TMath::Sqrt(mass*mass+px*px+py*py+pz*pz),
0,0,0,0);
}
/*****************************************************************************************/
-void THBTprocessor::PrintEvent()
+void THBTprocessor::PrintEvent() const
{
//Prints all particles (common block data)
cout<<"Print Event"<<endl;
/*****************************************************************************************/
-void THBTprocessor::DumpSettings()
+void THBTprocessor::DumpSettings() const
{
//prints values set in common blocks
ctest();
#ifndef THBTPROCESSOR_H
#define THBTPROCESSOR_H
+//_____________________________________________________________________________
+///////////////////////////////////////////////////////////////////////////////
+// //
+// class THBTprocessor //
+// //
+// Wrapper class to HBT processor fortran code. //
+// For more information see AliGenHBTprocessor class //
+// HBT processor is written by Lanny Ray //
+// //
+// //
+// Comunication is done via COMMON BLOCKS declared in HBTprocCOMMON.h //
+// using cfortran.h routines //
+// User should use class AliGenHBTprocessor and all their interface //
+// see there for more description //
+// //
+// Wrapper class written by //
+// Piotr Krzysztof Skowronski (Piotr.Skowronski@cern.ch) //
+// //
+///////////////////////////////////////////////////////////////////////////////
/*******************************************************/
//Author Piotr Krzysztof Skowronski e-mial: Piotr.Skowronski@cern.ch
// C++ Wrapper Class for fortran made HBT Processor written by Lanny Ray
THBTprocessor();
virtual ~THBTprocessor() {};
- virtual void Initialize();
- virtual void GenerateEvent();
- virtual void PrintEvent();
+ virtual void Initialize() const;
+ virtual void GenerateEvent() const;
+ virtual void PrintEvent() const;
virtual Int_t ImportParticles(TClonesArray *particles, Option_t *option="");
//Set/Gets
//comprehensive description off all these methods
//can be found in proper methods of AliGenHBTprocessor
- virtual void SetTrackRejectionFactor(Float_t trf = 1.0) {PARAMETERS.trk_accep = trf;}
- virtual void SetRefControl(Int_t rc =2) {PARAMETERS.ref_control = rc;}
- virtual void SetPIDs(Int_t pid1 = 8,Int_t pid2 = 9) {PARAMETERS.pid[0]=pid1; PARAMETERS.pid[1]=pid2;}
- virtual void SetNPIDtypes(Int_t npidt = 2){PARAMETERS.n_pid_types = npidt;}
- virtual void SetDeltap(Float_t deltp = 0.1) {PARAMETERS.deltap=deltp; }
- virtual void SetMaxIterations(Int_t maxiter = 50) {PARAMETERS.maxit = maxiter;}
- virtual void SetDelChi(Float_t dc = 0.1){PARAMETERS.delchi = dc;}
- virtual void SetIRand(Int_t irnd = 76564) {PARAMETERS.irand = irnd;}
- virtual void SetLambda(Float_t lam = 0.6) { PARAMETERS.lambda = lam;}
- virtual void SetR1d(Float_t r = 7.0) {PARAMETERS.R_1d=r;}
- virtual void SetRSide(Float_t rs = 6.0) {PARAMETERS.Rside=rs;}
- virtual void SetROut(Float_t ro = 7.0) {PARAMETERS.Rout=ro;}
- virtual void SetRLong(Float_t rl = 4.0) {PARAMETERS.Rlong=rl;}
- virtual void SetRPerp(Float_t rp = 6.0) {PARAMETERS.Rperp=rp;}
- virtual void SetRParallel(Float_t rprl = 4.0) {PARAMETERS.Rparallel=rprl;}
- virtual void SetR0(Float_t r0 = 4.0) {PARAMETERS.R0=r0;}
- virtual void SetQ0(Float_t q0 = 9.0) {PARAMETERS.Q0=q0;}
- virtual void SetSwitch1D(Int_t s1d = 3) {PARAMETERS.switch_1d = s1d;}
- virtual void SetSwitch3D(Int_t s3d = 0) {PARAMETERS.switch_3d = s3d;}
- virtual void SetSwitchType(Int_t st = 3) {PARAMETERS.switch_type = st;}
- virtual void SetSwitchCoherence(Int_t sc = 0) {PARAMETERS.switch_coherence = sc;}
- virtual void SetSwitchCoulomb(Int_t scol = 2) {PARAMETERS.switch_coulomb = scol;}
- virtual void SetSwitchFermiBose(Int_t sfb = 1) {PARAMETERS.switch_fermi_bose = sfb;}
+ virtual void SetTrackRejectionFactor(Float_t trf = 1.0) const {PARAMETERS.trk_accep = trf;}
+ virtual void SetRefControl(Int_t rc =2) const {PARAMETERS.ref_control = rc;}
+ virtual void SetPIDs(Int_t pid1 = 8,Int_t pid2 = 9) const {PARAMETERS.pid[0]=pid1; PARAMETERS.pid[1]=pid2;}
+ virtual void SetNPIDtypes(Int_t npidt = 2)const {PARAMETERS.n_pid_types = npidt;}
+ virtual void SetDeltap(Float_t deltp = 0.1) const {PARAMETERS.deltap=deltp; }
+ virtual void SetMaxIterations(Int_t maxiter = 50) const {PARAMETERS.maxit = maxiter;}
+ virtual void SetDelChi(Float_t dc = 0.1)const {PARAMETERS.delchi = dc;}
+ virtual void SetIRand(Int_t irnd = 76564) const {PARAMETERS.irand = irnd;}
+ virtual void SetLambda(Float_t lam = 0.6) const { PARAMETERS.lambda = lam;}
+ virtual void SetR1d(Float_t r = 7.0) const {PARAMETERS.R_1d=r;}
+ virtual void SetRSide(Float_t rs = 6.0) const {PARAMETERS.Rside=rs;}
+ virtual void SetROut(Float_t ro = 7.0) const {PARAMETERS.Rout=ro;}
+ virtual void SetRLong(Float_t rl = 4.0) const {PARAMETERS.Rlong=rl;}
+ virtual void SetRPerp(Float_t rp = 6.0) const {PARAMETERS.Rperp=rp;}
+ virtual void SetRParallel(Float_t rprl = 4.0) const {PARAMETERS.Rparallel=rprl;}
+ virtual void SetR0(Float_t r0 = 4.0) const {PARAMETERS.R0=r0;}
+ virtual void SetQ0(Float_t q0 = 9.0) const {PARAMETERS.Q0=q0;}
+ virtual void SetSwitch1D(Int_t s1d = 3) const {PARAMETERS.switch_1d = s1d;}
+ virtual void SetSwitch3D(Int_t s3d = 0) const {PARAMETERS.switch_3d = s3d;}
+ virtual void SetSwitchType(Int_t st = 3) const {PARAMETERS.switch_type = st;}
+ virtual void SetSwitchCoherence(Int_t sc = 0) const {PARAMETERS.switch_coherence = sc;}
+ virtual void SetSwitchCoulomb(Int_t scol = 2) const {PARAMETERS.switch_coulomb = scol;}
+ virtual void SetSwitchFermiBose(Int_t sfb = 1) const {PARAMETERS.switch_fermi_bose = sfb;}
- virtual void SetPtRange(Float_t ptmin = 0.1, Float_t ptmax = 0.98) //Pt in GeV/c
+ virtual void SetPtRange(Float_t ptmin = 0.1, Float_t ptmax = 0.98)const //Pt in GeV/c
{ MESH.pt_min=ptmin;MESH.pt_max=ptmax;}
- virtual void SetPxRange(Float_t pxmin = -1.0, Float_t pxmax = 1.0)
+ virtual void SetPxRange(Float_t pxmin = -1.0, Float_t pxmax = 1.0) const
{ MESH.px_min=pxmin;MESH.px_max=pxmax;}
- virtual void SetPyRange(Float_t pymin = -1.0, Float_t pymax = 1.0)
+ virtual void SetPyRange(Float_t pymin = -1.0, Float_t pymax = 1.0)const
{ MESH.py_min=pymin;MESH.py_max=pymax;}
- virtual void SetPzRange(Float_t pzmin = -3.6, Float_t pzmax = 3.6)
+ virtual void SetPzRange(Float_t pzmin = -3.6, Float_t pzmax = 3.6) const
{ MESH.pz_min=pzmin;MESH.pz_max=pzmax;}
- virtual void SetPhiRange(Float_t phimin = 0.0, Float_t phimax = 360.0) //Angle in degrees
+ virtual void SetPhiRange(Float_t phimin = 0.0, Float_t phimax = 360.0)const //Angle in degrees
{ MESH.phi_min=phimin;MESH.phi_max=phimax;}
- virtual void SetEtaRange(Float_t etamin = -1.5, Float_t etamax = 1.5) //Pseudorapidity !!!!!!!!!
+ virtual void SetEtaRange(Float_t etamin = -1.5, Float_t etamax = 1.5)const //Pseudorapidity !!!!!!!!!
{ MESH.eta_min=etamin;MESH.eta_max=etamax;}
- virtual void SetNPtBins(Int_t nptbin = 50){MESH.n_pt_bins=nptbin;}
- virtual void SetNPhiBins(Int_t nphibin = 50){MESH.n_phi_bins=nphibin;}
- virtual void SetNEtaBins(Int_t netabin = 50){MESH.n_eta_bins=netabin;}
+ virtual void SetNPtBins(Int_t nptbin = 50)const{MESH.n_pt_bins=nptbin;}
+ virtual void SetNPhiBins(Int_t nphibin = 50)const{MESH.n_phi_bins=nphibin;}
+ virtual void SetNEtaBins(Int_t netabin = 50)const{MESH.n_eta_bins=netabin;}
- virtual void SetNPxBins(Int_t npxbin = 20){MESH.n_px_bins=npxbin;}
- virtual void SetNPyBins(Int_t npybin = 20){MESH.n_py_bins=npybin;}
- virtual void SetNPzBins(Int_t npzbin = 70){MESH.n_pz_bins=npzbin;}
+ virtual void SetNPxBins(Int_t npxbin = 20)const{MESH.n_px_bins=npxbin;}
+ virtual void SetNPyBins(Int_t npybin = 20)const{MESH.n_py_bins=npybin;}
+ virtual void SetNPzBins(Int_t npzbin = 70)const{MESH.n_pz_bins=npzbin;}
- virtual void SetNBins1DFineMesh(Int_t n = 10){ MESH.n_1d_fine=n;}
- virtual void SetBinSize1DFineMesh(Float_t x=0.01){MESH.binsize_1d_fine=x;}
+ virtual void SetNBins1DFineMesh(Int_t n = 10)const{ MESH.n_1d_fine=n;}
+ virtual void SetBinSize1DFineMesh(Float_t x=0.01)const{MESH.binsize_1d_fine=x;}
- virtual void SetNBins1DCoarseMesh(Int_t n =2 ){MESH.n_1d_coarse =n;}
- virtual void SetBinSize1DCoarseMesh(Float_t x=0.05){MESH.binsize_1d_coarse=x;}
+ virtual void SetNBins1DCoarseMesh(Int_t n =2 )const{MESH.n_1d_coarse =n;}
+ virtual void SetBinSize1DCoarseMesh(Float_t x=0.05)const{MESH.binsize_1d_coarse=x;}
- virtual void SetNBins3DFineMesh(Int_t n = 8){MESH.n_3d_fine =n;}
- virtual void SetBinSize3DFineMesh(Float_t x=0.01){MESH.binsize_3d_fine=x;}
+ virtual void SetNBins3DFineMesh(Int_t n = 8)const{MESH.n_3d_fine =n;}
+ virtual void SetBinSize3DFineMesh(Float_t x=0.01)const{MESH.binsize_3d_fine=x;}
- virtual void SetNBins3DCoarseMesh(Int_t n = 2){ MESH.n_3d_coarse=n;}
- virtual void SetBinSize3DCoarseMesh(Float_t x=0.08){MESH.binsize_3d_coarse=x;}
+ virtual void SetNBins3DCoarseMesh(Int_t n = 2)const{ MESH.n_3d_coarse=n;}
+ virtual void SetBinSize3DCoarseMesh(Float_t x=0.08)const{MESH.binsize_3d_coarse=x;}
- virtual void SetNBins3DFineProjectMesh(Int_t n =3 ){ MESH.n_3d_fine_project=n;}
+ virtual void SetNBins3DFineProjectMesh(Int_t n =3 )const{ MESH.n_3d_fine_project=n;}
- virtual void SetPrintFull(Int_t flag = 1){PARAMETERS.print_full=flag;}
+ virtual void SetPrintFull(Int_t flag = 1)const{PARAMETERS.print_full=flag;}
- void DumpSettings();
- protected:
+ void DumpSettings() const;
- private:
ClassDef(THBTprocessor,0)
};