/* * DO NOT MANUALLY UPDATE THIS FILE. * If needed: make cpp_headers * * fortran2c.py - automatic conversion * flkcry.inc -> flkcry.h */ #ifndef __FLKCRY__ #define __FLKCRY__ #include "types.h" #ifdef __cplusplus extern "C" { #endif // //=== Flkcry ===========================================================* // //----------------------------------------------------------------------* // * // Copyright (C) 2003-2019: CERN & INFN * // All Rights Reserved. * // * // FLuKa CRYstal properties: * // * // Created on 17 October 2010 by Alfredo Ferrari * // CERN -EN * // * // Description of variables: * // * // Rcryst(k) = Nominal k_th crystal radius of curvature (cm) * // Acryst(k) = Length of the k_th crystal (cm) * // Bcryst(k) = Torsion coefficient of the k_th crystal (mrad/cm) * // Ccryst(k) = Quasi-Mosaic factor of the k_th crystal (mrad/cm) * // Dcryst(k) = Temperature of the k_th (Kelvin) * // U/V/Wcryst(k) = Nominal k_th crystal normal to the curvature plane * // U/V/Wcrys0(k) = Nominal k_th crystal entrance direction * // X/Y/Zcrys0(k) = Nominal k_th crystal entrance point * // Posccv(k,3) = center of curvature of the k-th crystal * // Bangcr(k) = crystal bending angle * // Cpdist(2,k) = crystal planar distance(s) (fm) * // Crypot(2,k) = crystal potential(s) (GeV) * // Cryoff(2,k) = crystal offset(s) (GeV) * // Cryxmn(2,k) = crystal position(s) at the potential minimum (fm) * // Debyet(k) = Debye temperature * // Thmacr(k) = Thermal motion amplitude of crystals * // Ictype(k) = Type of crystal: Si, Ge... 110, 111... * // Crysnm(k) = Name of the k_th crystal * // Kcryst(m) = Index of the m_th defined crystal * // Ncryst = Number of crystals defined * // * // The direction towards the centre of the trajectory is the one * // obtained by the cross product (U/V/W)crys0 x (U/V/W)cryst in that* // order, so that U/V/Wcryst is also the nominal "fake" B-field * // direction for a positive particle * // * // Crystal statistics * // Dechln(k) = Avg. dech. position as % of the k_th crystal length* // Captln(k) = Avg. capt. position as % of the k_th crystal length* // Ichan0(k) = #CH part. at entrance of the k_th crystal (CHENTR) * // Iam0(k) = #AM part. at entrance of the k_th crystal (CHENTR) * // Iqchn0(k) = #QCH part. at entrance of the k_th crystal (CHENTR)* // Ihybr0(k) = #Hybrid part. at entrance of the k_th crystal (CHENTR)* // Ichan1(k) = #CH part. at exit of the k_th crystal (KASKAD) * // Iam1(k) = #AM part. at exit of the k_th crystal (KASKAD) * // Icapt(k) = #Capture part. in the k_th crystal (VOLZON) * // Idech(k) = #Dechanneled part. in the k_th crystal (ICRCHN) * // Ivr(k) = #Vol. Refl. part. in the k_th crystal (VOLZON) * // Icryni(r,k) = #Inel. int. in the r_th regime in the k_th crystal (KASKAD) // Icryne(r,k) = #El. int. in the r_th regime in the k_th crystal (KASKAD) // Icemdt(r,k) = #EMD of target in the r_th regime in the k_th crystal (KASKAD) // Icemdp(r,k) = #EMD of proj. in the r_th regime in the k_th crystal (KASKAD) // * // Crystal developement variables (to be removed) * // Lcrdev = crystal development flag * // Lchdedx = activate the reduction of the dedx in channeling * // Lqcndf = apply the nuclear density factor for QCH particles * // Qchndf = QCH particle Nuclear Density Factor * // Lqchss = activate Single Scattering in VR for QCH particles * // Lh2qch = treat hybrid state as QCH particles * // Lchver = increase verbosity * //----------------------------------------------------------------------* // // const int MXCRYS = 20; extern struct { double rcryst[MXCRYS]; double acryst[MXCRYS]; double bcryst[MXCRYS]; double ccryst[MXCRYS]; double dcryst[MXCRYS]; double ucryst[MXCRYS]; double vcryst[MXCRYS]; double wcryst[MXCRYS]; double ucrys0[MXCRYS]; double vcrys0[MXCRYS]; double wcrys0[MXCRYS]; double xcrys0[MXCRYS]; double ycrys0[MXCRYS]; double zcrys0[MXCRYS]; double posccv[3][MXCRYS]; double bangcr[MXCRYS]; double cpdist[MXCRYS][2]; double crypot[MXCRYS][2]; double cryoff[MXCRYS][2]; double cryxmn[MXCRYS][2]; double debyet[MXCRYS]; double thmacr[MXCRYS]; int ictype[MXCRYS]; int kcryst[MXCRYS]; int ncryst; } flkcry_; extern struct { char crysnm[MXCRYS][8]; } flkcrc_; extern struct { double dechln[MXCRYS]; double captln[MXCRYS]; int ichan0[MXCRYS]; int iam0[MXCRYS]; int iqchn0[MXCRYS]; int ihybr0[MXCRYS]; int ichan1[MXCRYS]; int iam1[MXCRYS]; int icapt[MXCRYS]; int idech[MXCRYS]; int ivr[MXCRYS]; int icryni[MXCRYS][2+1+1]; int icryne[MXCRYS][2+1+1]; int icemdt[MXCRYS][2+1+1]; int icemdp[MXCRYS][2+1+1]; } flksta_; const int flksta_icryni_base = -1; const int flksta_icryne_base = -1; const int flksta_icemdt_base = -1; const int flksta_icemdp_base = -1; extern struct { double qchndf; logical lcrdev; logical lchdedx; logical lqcndf; logical lqchss; logical lh2qch; logical lchemd; logical lchver; } crydev_; #ifdef __cplusplus } #endif #endif