// simulation of induced current model iusing e-h transport // 2010.9.30 T. Kondo(KEK) // #include "AthenaBaseComps/AthAlgorithm.h" #include "GaudiKernel/ITHistSvc.h" #include "TH1.h" #include "TProfile.h" #include "AthenaKernel/IAtRndmGenSvc.h" class IAtRndmGenSvc; class ISiPropertiesSvc; ///////////////////////////////////////////////////////////////////////////// class MySCTtscan:public AthAlgorithm { public: MySCTtscan(const std::string& name, ISvcLocator* pSvcLocator); ~MySCTtscan(); StatusCode initialize(); StatusCode execute(); StatusCode finalize(); StatusCode initRandomEngine(); StatusCode holeTransport(double x0, double y0, double* Q_m2, double* Q_m1, double* Q_00, double* Q_p1, double* Q_p2 ); StatusCode electronTransport(double x0, double y0, double* Q_m2, double* Q_m1, double* Q_00, double* Q_p1, double* Q_p2 ); StatusCode oldSCTDigitization(double x0, double y0, double* Q_m2, double* Q_m1, double* Q_00, double* Q_p1, double* Q_p2 ); double Drift_Time(double zhit); double Drift_SurfaceTime(double ysurf); double Amp_response(double time); double Amp_crosstalk(double time); void init_Amp(); void initTransport(); bool electron( double x_e, double y_e, double &vx_e, double &vy_e, double &D_e) ; bool hole( double x_h, double y_h, double &vx_h, double &vy_h, double &D_h); double mud_e(double E) ; void init_mud_e(double T) ; double mud_h(double E) ; void init_mud_h(double T) ; void EField( double x, double y, double &Ex, double &Ey ) ; double induced (int istrip, double x, double y); void initExEyArray(); void initPotentialValue(); private: //!< Random number service ServiceHandle m_rndmSvc; //!< Random number service //ServiceHandle getRndmSvc() const { return m_rndmSvc; } std::string m_rndmEngineName; //!< Name of random engine, CLHEP::HepRandomEngine *m_rndmEngine; //!< Random number generation engine // ServiceHandle m_siPropertiesSvc; // /** a handle on the Hist/TTree registration service */ ITHistSvc * m_thistSvc; /** Histograms */ TH1F *m_h_hitStrip; TProfile *m_h_tscan_0; TProfile *m_h_tscan_1; TProfile *m_h_tscan_2; TProfile *m_h_tscan_all; //------parameters given exterbnally by jobOptions ------------------ int m_model; bool m_isSCTDigiModel; double m_timeOfThreshold; double m_timeOfThreshold_min; double m_timeOfThreshold_max; bool m_isNewPulseShape; double m_VD; double m_VB; double m_B; double m_T; double m_transportTimeStep; double m_transportTimeMax; double m_x_origin_min; double m_x_origin_max; double m_phi_min; double m_phi_max; double m_eta_min; double m_eta_max; double m_threshold; int m_ydivision; double m_eh_pairs; bool m_isLandau; int m_coutLevel; //------parameters mostly fixed but can be changed exterbnally ------------ double m_bulk_depth; double m_strip_pitch; double m_CrossFactor2sides; double m_CrossFactorBack; double m_PeakTime; //-------common parameters ------------------------------------------- double m_kB; double m_e; double m_vs_e; double m_Ec_e ; double m_driftMobility; double m_tanLA; double m_diffusion; double m_beta_e ; double m_vs_h; double m_Ec_h ; double m_beta_h ; int m_event_number; double m_depletion_depth; double m_y_origin_min; double m_NormConstCentral; double m_NormConstNeigh; //----------------------------------------------------------------- double m_PotentialValue[81][115]; double m_ExValue150[17][115]; double m_EyValue150[17][115]; StatusCode m_sc; };