#include "TpcDigiMapper.h" #include "TpcPad.h" #include "TpcAbsPadShape.h" TpcDigiMapper* TpcDigiMapper::_instance = NULL; TpcDigiMapper::~TpcDigiMapper() { delete _gas; delete _gem; delete _padShapes; delete _padPlane; } TpcDigiMapper::TpcDigiMapper() { _gas= new TpcGas("NEON-90_CO2-10_B2_PRES1013.asc",400); //TODO: Get these things from Database!!! _gem=new TpcGem(5000, // Gain 0.02); // Spread _padShapes = new TpcPadShapePool("2mmPads.dat", *_gem, 0.5, // lookup range 0.02, // Lookup Step 0.01); // LookupIntegrationStep _padPlane= new TpcPadPlane(100,100, 1.,1., -50.,-50.); // Put Pads into PadPlane _padPlane->ReadFromFile("padplane.dat", _padShapes); } void TpcDigiMapper::map(const TpcDigi* const _dig, TVector3& _vec) { double x,y,z; double _zGEM = -40.; int t0=-60000; z =(_dig->t()*25.+t0)*_gas->VDrift()+_zGEM; _padPlane->GetPadXY(_dig->padId(),x,y); _vec.SetXYZ(x,y,z); } void TpcDigiMapper::padsize(const unsigned int id, double& dx, double& dy){ _padPlane->GetPad(id)->shape()->EvalBoundingRect(dx, dy,0); } /* _gas->VDrift() */