#ifndef CRYSTALCOLLIMATOR_H #define CRYSTALCOLLIMATOR_H #include #include #include #include #include #include #include "Collimator.h" #include "simcrys.h" using namespace std; /* ################################################################################################ This class describes all Crystal collimators in the accelerator lattice. ################################################################################################ */ class CrystalCollimator : public Collimator { public: //=================================================Constructors, destructor======================================= CrystalCollimator(const double& ALFX, const double& ALFY, const double& APER_1, const double& APER_2, const double& APER_3, const double& APER_4, const string& APERTYPE, const double& BETX, const double& BETY, const double& DPX, const double& DPY, const double& DX, const double& DY, const string& KEYWORD, const double& L, const double& MUX, const double& MUY, const string& NAME, const double& PTC, const double& PXC, const double& PYC, const double& S, const double& TC, const double& XC, const double& YC, const double& K0L, const double& K0SL, const double& K1L, const double& K1SL, const double& K2L, const double& K2SL, const string& PARENT, const string& meth, const double& hgap, const double& hgap2, const double& collang, const double& pdepth, const double& pdepth2, const double& tcang, const double& nsig); CrystalCollimator(Element elt, const double& tcang, const double& nsig, const string& meth); CrystalCollimator(const CrystalCollimator& obj); virtual ~CrystalCollimator() {}; //method usually describing the passage through a collimator; here it is not used void collipass(Particle& p1, double& dpopeff, const double& scaleorbit, const double& R11X, const double& R12X, const double& R21X, const double& R22X, const double& R11Y, const double& R12Y, const double& R21Y, const double& R22Y, const double& dx1, const double& dpx1, const double& dy1, const double& dpy1, const double& delta_s, const double& Apr, const double& Zpr, const double& betgam) {}; //method specific to the passage through a Crystal collimator void collipassCrystal(vector & bunch, const double& betgam, const int& pas, long int& nhit, string outputpath); //displays the parameters of the collimator void affiche(); //================================================= Attributs ===================================================== static int crystaloutflag; //flag to indicate if we have to built a new file for the crystal output }; #endif