// requires ROOT: http://root.cern.ch/ // // usage: compile using ROOT by: ".L library_e_collision.C+" (note the plus sign) // // By: Jaideep Singh // // Date: 03/16/07 // // descp: Collisional Energy Loss Parameter Calculator // // accopanies this technote: http://www.jlab.org/~singhj/docs/radlength_sagdhv130.ps // // To use this library, place the following line in your macro to load the lib: // // gSystem->Load("library_e_collision_C.so"); // // Make sure that it has been compiled as described in the usage above. // Make sure that the path is correct in the "Load" command // // calculated mean and most probable collisional enery loss of electrons // passing through the elements and the following composite materials: // H2, D2, CO2, SiO2, Na2O, CaO, BaO, SrO, BaO, B2O, K2O, Al2O3, As2O3, // air, kapton, polystyrene, C1720, GE180, H20 // // calcultes the density correction and uses Bethe-Bloch and Landau formulas // // references: Sternheimer, Berger, Seltzer ATOMIC DATA AND NUCLEAR DATA TABLES 30, 261-71 (1984) // Particle Data Group, "Review of Particle Physics" Phys. Lett. B Vol 592 July 2004 // Material Composition Data (NIST 03/07/07): http://physics.nist.gov/cgi-bin/Star/compos.pl // ESTAR (NIST 03/16/07) http://physics.nist.gov/PhysRefData/Star/Text/ESTAR.html // head files needed to compile macro #include "TMath.h" #include "Riostream.h" #include "library_pc.C" // Collisional/Ionization loss spectrum "a" scale TSAI71 Double_t fBB_a(Double_t ZA , Double_t beta) { Double_t left = 2.0*TMath::Pi()*pc_NA()*pc_re()*pc_re(); // #*m^2/mol left *= 100.0*100.0; // #*cm^2/mol Double_t m = pc_m_e("MeV"); // MeV Double_t right = ZA/beta/beta; // mol/g return left*m*right; // MeV*cm^2/g } // density effect // See SBS AD & NDT 1984 Double_t fBB_delta(Double_t X, Double_t Xa, Double_t X0, Double_t X1, Double_t delta0, Double_t m) { Double_t tlt = 2.0*TMath::Log(10.0); // 4.6052 Double_t a = (delta0 + tlt*(Xa-X0) )/TMath::Power(X1-X0,m); Double_t delta = 0.0; if ( X <= X0) { delta = delta0*TMath::Power(100.0,X-X0); // X <= X0 } else if (X0 < X && X < X1) { delta = tlt*(X-Xa)+a*TMath::Power(X1-X,m); // X0 < X < X1 } else { delta = tlt*(X-Xa); // X >= X1 } return delta; } // Collision/Ionization Loss parameters // from Sternheimer, Berger, Seltzer ATOMIC DATA AND NUCLEAR DATA TABLES 30, 261-71 (1984) // material = name of material // parameter = "I" , mean ionization potential (eV) // parameter = "C" , for density correction // parameter = "X0" , for density correction // parameter = "X1" , for density correction // parameter = "a" , for density correction // parameter = "m" , for density correction // parameter = "d0" , for density correction // parameter = "density" , "normal" density of material at room temperature? g/cm^3 // jacked from NIST database and made by perl script in bethe-bloch directory Double_t fBB(TString material = "H" , TString parameter = "I") { Double_t ZA = 0.0; Double_t I = 0.0; Double_t I_gas = 0.0; Double_t I_lors = 0.0; Double_t C = 0.0; Double_t X0 = 0.0; Double_t X1 = 0.0; Double_t a = 0.0; Double_t m = 0.0; Double_t delta0 = 0.0; Double_t density = 0.0; Double_t output = 0.0; // insert "coll_loss_par.C" here if (material == "H") { ZA = 0.9922; I = 19.2; I_gas = 1.0000; I_lors = 1.0000; C = -9.5835; X0 = 1.8639; X1 = 3.2718; a = 0.1409; m = 5.7273; delta0 = 0.00; density = 8.3748E-05; } else if (material == "H2") { ZA = 0.9922; I = 21.8; I_gas = 1.0000; I_lors = 1.0000; C = -3.2632; X0 = 0.4759; X1 = 1.9215; a = 0.1348; m = 5.6249; delta0 = 0.00; density = 6.0000E-02; } else if (material == "He") { ZA = 0.4997; I = 41.8; I_gas = 1.0000; I_lors = 1.1300; C = -11.1393; X0 = 2.2017; X1 = 3.6122; a = 0.1344; m = 5.8347; delta0 = 0.00; density = 1.6632E-04; } else if (material == "Li") { ZA = 0.4322; I = 40.0; I_gas = 1.0000; I_lors = 1.1300; C = -3.1221; X0 = 0.1304; X1 = 1.6397; a = 0.9514; m = 2.4993; delta0 = 0.14; density = 5.3400E-01; } else if (material == "Be") { ZA = 0.4438; I = 63.7; I_gas = 1.0000; I_lors = 1.1300; C = -2.7847; X0 = 0.0592; X1 = 1.6922; a = 0.8039; m = 2.4339; delta0 = 0.14; density = 1.8480E+00; } else if (material == "B") { ZA = 0.4625; I = 76.0; I_gas = 1.0000; I_lors = 1.1300; C = -2.8477; X0 = 0.0305; X1 = 1.9688; a = 0.5622; m = 2.4512; delta0 = 0.14; density = 2.3700E+00; } else if (material == "graphite") { ZA = 0.4995; I = 78.0; I_gas = 0.8974; I_lors = 1.0385; C = -2.8680; X0 = -0.1780; X1 = 2.3415; a = 0.2614; m = 2.8697; delta0 = 0.12; density = 2.2650E+00; } else if (material == "C") { ZA = 0.4995; I = 78.0; I_gas = 0.8974; I_lors = 1.0385; C = -2.9925; X0 = -0.0351; X1 = 2.4860; a = 0.2024; m = 3.0036; delta0 = 0.10; density = 2.0000E+00; } else if (material == "amorphous carbon") { ZA = 0.4995; I = 78.0; I_gas = 0.8974; I_lors = 1.0385; C = -3.1550; X0 = 0.0480; X1 = 2.5387; a = 0.2076; m = 2.9532; delta0 = 0.14; density = 1.7000E+00; } else if (material == "N") { ZA = 0.4998; I = 82.0; I_gas = 1.0000; I_lors = 1.0000; C = -10.5400; X0 = 1.7378; X1 = 4.1323; a = 0.1535; m = 3.2125; delta0 = 0.00; density = 1.1653E-03; } else if (material == "O") { ZA = 0.5000; I = 95.0; I_gas = 1.0211; I_lors = 1.1158; C = -10.7004; X0 = 1.7541; X1 = 4.3213; a = 0.1778; m = 3.2913; delta0 = 0.00; density = 1.3315E-03; } else if (material == "F") { ZA = 0.4737; I = 115.0; I_gas = 1.0000; I_lors = 0.9739; C = -10.9653; X0 = 1.8433; X1 = 4.4096; a = 0.1108; m = 3.2962; delta0 = 0.00; density = 1.5803E-03; } else if (material == "Ne") { ZA = 0.4956; I = 137.0; I_gas = 1.0000; I_lors = 1.1300; C = -11.9041; X0 = 2.0735; X1 = 4.6421; a = 0.0806; m = 3.5771; delta0 = 0.00; density = 8.3851E-04; } else if (material == "Na") { ZA = 0.4785; I = 149.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.0526; X0 = 0.2880; X1 = 3.1962; a = 0.0772; m = 3.6452; delta0 = 0.08; density = 9.7100E-01; } else if (material == "Mg") { ZA = 0.4937; I = 156.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.5297; X0 = 0.1499; X1 = 3.0668; a = 0.0816; m = 3.6166; delta0 = 0.08; density = 1.7400E+00; } else if (material == "Al") { ZA = 0.4818; I = 166.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.2395; X0 = 0.1708; X1 = 3.0127; a = 0.0802; m = 3.6345; delta0 = 0.12; density = 2.6989E+00; } else if (material == "Si") { ZA = 0.4985; I = 173.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.4351; X0 = 0.2014; X1 = 2.8715; a = 0.1492; m = 3.2546; delta0 = 0.14; density = 2.3300E+00; } else if (material == "P") { ZA = 0.4843; I = 173.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.5214; X0 = 0.1696; X1 = 2.7815; a = 0.2361; m = 2.9158; delta0 = 0.14; density = 2.2000E+00; } else if (material == "S") { ZA = 0.4991; I = 180.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.6659; X0 = 0.1580; X1 = 2.7159; a = 0.3399; m = 2.6456; delta0 = 0.14; density = 2.0000E+00; } else if (material == "Cl") { ZA = 0.4795; I = 174.0; I_gas = 1.0000; I_lors = 1.0345; C = -11.1421; X0 = 1.5550; X1 = 4.2994; a = 0.1985; m = 2.9702; delta0 = 0.00; density = 2.9947E-03; } else if (material == "Ar") { ZA = 0.4506; I = 188.0; I_gas = 1.0000; I_lors = 1.1300; C = -11.9480; X0 = 1.7635; X1 = 4.4855; a = 0.1971; m = 2.9618; delta0 = 0.00; density = 1.6620E-03; } else if (material == "K") { ZA = 0.4860; I = 190.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.6423; X0 = 0.3851; X1 = 3.1724; a = 0.1983; m = 2.9233; delta0 = 0.10; density = 8.6200E-01; } else if (material == "Ca") { ZA = 0.4990; I = 191.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.0396; X0 = 0.3228; X1 = 3.1191; a = 0.1564; m = 3.0745; delta0 = 0.14; density = 1.5500E+00; } else if (material == "Sc") { ZA = 0.4671; I = 216.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.6949; X0 = 0.1640; X1 = 3.0593; a = 0.1575; m = 3.0517; delta0 = 0.10; density = 2.9890E+00; } else if (material == "Ti") { ZA = 0.4595; I = 233.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.4450; X0 = 0.0957; X1 = 3.0386; a = 0.1566; m = 3.0302; delta0 = 0.12; density = 4.5400E+00; } else if (material == "V") { ZA = 0.4515; I = 245.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.2659; X0 = 0.0691; X1 = 3.0322; a = 0.1544; m = 3.0163; delta0 = 0.14; density = 6.1100E+00; } else if (material == "Cr") { ZA = 0.4616; I = 257.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.1781; X0 = 0.0340; X1 = 3.0451; a = 0.1542; m = 2.9896; delta0 = 0.14; density = 7.1800E+00; } else if (material == "Mn") { ZA = 0.4551; I = 272.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.2702; X0 = 0.0447; X1 = 3.1074; a = 0.1497; m = 2.9796; delta0 = 0.14; density = 7.4400E+00; } else if (material == "Fe") { ZA = 0.4656; I = 286.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.2911; X0 = -0.0012; X1 = 3.1531; a = 0.1468; m = 2.9632; delta0 = 0.12; density = 7.8740E+00; } else if (material == "Co") { ZA = 0.4581; I = 297.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.2601; X0 = -0.0187; X1 = 3.1790; a = 0.1447; m = 2.9502; delta0 = 0.12; density = 8.9000E+00; } else if (material == "Ni") { ZA = 0.4771; I = 311.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.3115; X0 = -0.0566; X1 = 3.1851; a = 0.1650; m = 2.8430; delta0 = 0.10; density = 8.9020E+00; } else if (material == "Cu") { ZA = 0.4564; I = 322.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.4190; X0 = -0.0254; X1 = 3.2792; a = 0.1434; m = 2.9044; delta0 = 0.08; density = 8.9600E+00; } else if (material == "Zn") { ZA = 0.4589; I = 330.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.6906; X0 = 0.0049; X1 = 3.3668; a = 0.1471; m = 2.8652; delta0 = 0.08; density = 7.1330E+00; } else if (material == "Ga") { ZA = 0.4446; I = 334.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.9353; X0 = 0.2267; X1 = 3.5434; a = 0.0944; m = 3.1314; delta0 = 0.14; density = 5.9040E+00; } else if (material == "Ge") { ZA = 0.4408; I = 350.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.1411; X0 = 0.3376; X1 = 3.6096; a = 0.0719; m = 3.3306; delta0 = 0.14; density = 5.3230E+00; } else if (material == "As") { ZA = 0.4405; I = 347.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.0510; X0 = 0.1767; X1 = 3.5702; a = 0.0663; m = 3.4176; delta0 = 0.08; density = 5.7300E+00; } else if (material == "Se") { ZA = 0.4306; I = 348.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.3210; X0 = 0.2258; X1 = 3.6244; a = 0.0657; m = 3.4317; delta0 = 0.10; density = 4.5000E+00; } else if (material == "Br") { ZA = 0.4380; I = 343.0; I_gas = 1.0000; I_lors = 1.1300; C = -11.7307; X0 = 1.5262; X1 = 4.9899; a = 0.0634; m = 3.4670; delta0 = 0.00; density = 7.0722E-03; } else if (material == "Kr") { ZA = 0.4296; I = 352.0; I_gas = 1.0000; I_lors = 1.1300; C = -12.5115; X0 = 1.7158; X1 = 5.0748; a = 0.0745; m = 3.4051; delta0 = 0.00; density = 3.4783E-03; } else if (material == "Rb") { ZA = 0.4329; I = 363.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.4776; X0 = 0.5737; X1 = 3.7995; a = 0.0726; m = 3.4177; delta0 = 0.14; density = 1.5320E+00; } else if (material == "Sr") { ZA = 0.4337; I = 366.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9867; X0 = 0.4585; X1 = 3.6778; a = 0.0717; m = 3.4435; delta0 = 0.14; density = 2.5400E+00; } else if (material == "Y") { ZA = 0.4387; I = 379.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.4801; X0 = 0.3608; X1 = 3.5542; a = 0.0714; m = 3.4585; delta0 = 0.14; density = 4.4690E+00; } else if (material == "Zr") { ZA = 0.4385; I = 393.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.1774; X0 = 0.2957; X1 = 3.4890; a = 0.0718; m = 3.4533; delta0 = 0.14; density = 6.5060E+00; } else if (material == "Nb") { ZA = 0.4413; I = 417.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.0141; X0 = 0.1785; X1 = 3.2201; a = 0.1388; m = 3.0930; delta0 = 0.14; density = 8.5700E+00; } else if (material == "Mo") { ZA = 0.4378; I = 424.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.8793; X0 = 0.2267; X1 = 3.2784; a = 0.1052; m = 3.2549; delta0 = 0.14; density = 1.0220E+01; } else if (material == "Tc") { ZA = 0.4392; I = 428.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.7769; X0 = 0.0949; X1 = 3.1253; a = 0.1657; m = 2.9738; delta0 = 0.14; density = 1.1500E+01; } else if (material == "Ru") { ZA = 0.4353; I = 441.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.7694; X0 = 0.0599; X1 = 3.0834; a = 0.1934; m = 2.8707; delta0 = 0.14; density = 1.2410E+01; } else if (material == "Rh") { ZA = 0.4373; I = 449.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.8008; X0 = 0.0576; X1 = 3.1069; a = 0.1920; m = 2.8633; delta0 = 0.14; density = 1.2410E+01; } else if (material == "Pd") { ZA = 0.4323; I = 470.0; I_gas = 1.0000; I_lors = 1.1300; C = -4.9358; X0 = 0.0563; X1 = 3.0555; a = 0.2418; m = 2.7239; delta0 = 0.14; density = 1.2020E+01; } else if (material == "Ag") { ZA = 0.4357; I = 470.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.0630; X0 = 0.0657; X1 = 3.1074; a = 0.2459; m = 2.6899; delta0 = 0.14; density = 1.0500E+01; } else if (material == "Cd") { ZA = 0.4270; I = 469.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.2727; X0 = 0.1281; X1 = 3.1667; a = 0.2461; m = 2.6772; delta0 = 0.14; density = 8.6500E+00; } else if (material == "In") { ZA = 0.4268; I = 488.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.5211; X0 = 0.2406; X1 = 3.2032; a = 0.2388; m = 2.7144; delta0 = 0.14; density = 7.3100E+00; } else if (material == "Sn") { ZA = 0.4213; I = 488.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.5340; X0 = 0.2879; X1 = 3.2959; a = 0.1869; m = 2.8576; delta0 = 0.14; density = 7.3100E+00; } else if (material == "Sb") { ZA = 0.4189; I = 487.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.6241; X0 = 0.3189; X1 = 3.3489; a = 0.1665; m = 2.9319; delta0 = 0.14; density = 6.6910E+00; } else if (material == "Te") { ZA = 0.4075; I = 485.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.7131; X0 = 0.3296; X1 = 3.4418; a = 0.1381; m = 3.0354; delta0 = 0.14; density = 6.2400E+00; } else if (material == "I") { ZA = 0.4176; I = 491.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9488; X0 = 0.0549; X1 = 3.2596; a = 0.2377; m = 2.7276; delta0 = 0.00; density = 4.9300E+00; } else if (material == "Xe") { ZA = 0.4113; I = 482.0; I_gas = 1.0000; I_lors = 1.1300; C = -12.7281; X0 = 1.5630; X1 = 4.7371; a = 0.2331; m = 2.7414; delta0 = 0.00; density = 5.4854E-03; } else if (material == "Cs") { ZA = 0.4138; I = 488.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.9135; X0 = 0.5473; X1 = 3.5914; a = 0.1823; m = 2.8866; delta0 = 0.14; density = 1.8730E+00; } else if (material == "Ba") { ZA = 0.4078; I = 491.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.3153; X0 = 0.4190; X1 = 3.4547; a = 0.1827; m = 2.8906; delta0 = 0.14; density = 3.5000E+00; } else if (material == "La") { ZA = 0.4104; I = 501.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.7850; X0 = 0.3161; X1 = 3.3293; a = 0.1859; m = 2.8828; delta0 = 0.14; density = 6.1540E+00; } else if (material == "Ce") { ZA = 0.4139; I = 523.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.7837; X0 = 0.2713; X1 = 3.3432; a = 0.1888; m = 2.8592; delta0 = 0.14; density = 6.6570E+00; } else if (material == "Pr") { ZA = 0.4187; I = 535.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.8096; X0 = 0.2333; X1 = 3.2773; a = 0.2326; m = 2.7331; delta0 = 0.14; density = 6.7100E+00; } else if (material == "Nd") { ZA = 0.4160; I = 546.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.8290; X0 = 0.1984; X1 = 3.3063; a = 0.2353; m = 2.7050; delta0 = 0.14; density = 6.9000E+00; } else if (material == "Pm") { ZA = 0.4209; I = 560.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.8224; X0 = 0.1627; X1 = 3.3199; a = 0.2428; m = 2.6674; delta0 = 0.14; density = 7.2200E+00; } else if (material == "Sm") { ZA = 0.4123; I = 574.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.8597; X0 = 0.1520; X1 = 3.3460; a = 0.2470; m = 2.6403; delta0 = 0.14; density = 7.4600E+00; } else if (material == "Eu") { ZA = 0.4146; I = 580.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.2278; X0 = 0.1888; X1 = 3.4633; a = 0.2445; m = 2.6245; delta0 = 0.14; density = 5.2430E+00; } else if (material == "Gd") { ZA = 0.4070; I = 591.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.8738; X0 = 0.1058; X1 = 3.3932; a = 0.2511; m = 2.5977; delta0 = 0.14; density = 7.9004E+00; } else if (material == "Tb") { ZA = 0.4090; I = 614.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9045; X0 = 0.0947; X1 = 3.4224; a = 0.2445; m = 2.6056; delta0 = 0.14; density = 8.2290E+00; } else if (material == "Dy") { ZA = 0.4062; I = 628.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9183; X0 = 0.0822; X1 = 3.4474; a = 0.2467; m = 2.5849; delta0 = 0.14; density = 8.5500E+00; } else if (material == "Ho") { ZA = 0.4062; I = 650.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9587; X0 = 0.0761; X1 = 3.4782; a = 0.2464; m = 2.5726; delta0 = 0.14; density = 8.7950E+00; } else if (material == "Er") { ZA = 0.4066; I = 658.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9521; X0 = 0.0684; X1 = 3.4922; a = 0.2482; m = 2.5573; delta0 = 0.14; density = 9.0660E+00; } else if (material == "Tm") { ZA = 0.4084; I = 674.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9677; X0 = 0.0812; X1 = 3.5085; a = 0.2489; m = 2.5469; delta0 = 0.14; density = 9.3210E+00; } else if (material == "Yb") { ZA = 0.4045; I = 684.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.3325; X0 = 0.1199; X1 = 3.6246; a = 0.2530; m = 2.5141; delta0 = 0.14; density = 6.7300E+00; } else if (material == "Lu") { ZA = 0.4058; I = 694.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9785; X0 = 0.1560; X1 = 3.5218; a = 0.2403; m = 2.6543; delta0 = 0.14; density = 9.8400E+00; } else if (material == "Ha") { ZA = 0.4034; I = 705.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.7139; X0 = 0.1965; X1 = 3.4337; a = 0.2292; m = 2.6155; delta0 = 0.14; density = 1.3310E+01; } else if (material == "Ta") { ZA = 0.4034; I = 718.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.5262; X0 = 0.2117; X1 = 3.4805; a = 0.1780; m = 2.7623; delta0 = 0.14; density = 1.6654E+01; } else if (material == "W") { ZA = 0.4025; I = 727.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.4059; X0 = 0.2167; X1 = 3.4960; a = 0.1551; m = 2.8447; delta0 = 0.14; density = 1.9300E+01; } else if (material == "Re") { ZA = 0.4028; I = 736.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.3445; X0 = 0.0559; X1 = 3.4845; a = 0.1518; m = 2.8627; delta0 = 0.08; density = 2.1020E+01; } else if (material == "Os") { ZA = 0.3996; I = 746.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.3083; X0 = 0.0891; X1 = 3.5414; a = 0.1275; m = 2.9608; delta0 = 0.10; density = 2.2570E+01; } else if (material == "Ir") { ZA = 0.4006; I = 757.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.3418; X0 = 0.0819; X1 = 3.5480; a = 0.1269; m = 2.9658; delta0 = 0.10; density = 2.2420E+01; } else if (material == "Pt") { ZA = 0.3998; I = 790.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.4732; X0 = 0.1484; X1 = 3.6212; a = 0.1113; m = 3.0417; delta0 = 0.12; density = 2.1450E+01; } else if (material == "Au") { ZA = 0.4011; I = 790.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.5747; X0 = 0.2021; X1 = 3.6979; a = 0.0976; m = 3.1101; delta0 = 0.14; density = 1.9320E+01; } else if (material == "Hg") { ZA = 0.3988; I = 800.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.9605; X0 = 0.2756; X1 = 3.7275; a = 0.1101; m = 3.0519; delta0 = 0.14; density = 1.3546E+01; } else if (material == "Tl") { ZA = 0.3963; I = 810.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.1365; X0 = 0.3491; X1 = 3.8044; a = 0.0945; m = 3.1450; delta0 = 0.14; density = 1.1720E+01; } else if (material == "Pb") { ZA = 0.3958; I = 823.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.2018; X0 = 0.3776; X1 = 3.8073; a = 0.0936; m = 3.1608; delta0 = 0.14; density = 1.1350E+01; } else if (material == "Bi") { ZA = 0.3972; I = 823.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.3505; X0 = 0.4152; X1 = 3.8248; a = 0.0941; m = 3.1671; delta0 = 0.14; density = 9.7470E+00; } else if (material == "Po") { ZA = 0.4019; I = 830.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.4003; X0 = 0.4267; X1 = 3.8293; a = 0.0928; m = 3.1830; delta0 = 0.14; density = 9.3200E+00; } else if (material == "Rn") { ZA = 0.3874; I = 794.0; I_gas = 1.0000; I_lors = 1.1300; C = -13.2839; X0 = 1.5368; X1 = 4.9889; a = 0.2080; m = 2.7409; delta0 = 0.00; density = 9.0662E-03; } else if (material == "Ra") { ZA = 0.3893; I = 826.0; I_gas = 1.0000; I_lors = 1.1300; C = -7.0452; X0 = 0.5991; X1 = 3.9428; a = 0.0880; m = 3.2454; delta0 = 0.14; density = 5.0000E+00; } else if (material == "Ac") { ZA = 0.3920; I = 841.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.3742; X0 = 0.4559; X1 = 3.7966; a = 0.0857; m = 3.2683; delta0 = 0.14; density = 1.0070E+01; } else if (material == "Th") { ZA = 0.3879; I = 847.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.2473; X0 = 0.4202; X1 = 3.7681; a = 0.0866; m = 3.2610; delta0 = 0.14; density = 1.1720E+01; } else if (material == "Pa") { ZA = 0.3939; I = 878.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.0327; X0 = 0.3144; X1 = 3.5079; a = 0.1477; m = 2.9845; delta0 = 0.14; density = 1.5370E+01; } else if (material == "U") { ZA = 0.3865; I = 890.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.8694; X0 = 0.2260; X1 = 3.3721; a = 0.1968; m = 2.8171; delta0 = 0.14; density = 1.8950E+01; } else if (material == "Np") { ZA = 0.3923; I = 902.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.8149; X0 = 0.1869; X1 = 3.3690; a = 0.1974; m = 2.8082; delta0 = 0.14; density = 2.0250E+01; } else if (material == "Pu") { ZA = 0.3932; I = 921.0; I_gas = 1.0000; I_lors = 1.1300; C = -5.8748; X0 = 0.1557; X1 = 3.3981; a = 0.2042; m = 2.7679; delta0 = 0.14; density = 1.9840E+01; } else if (material == "Am") { ZA = 0.3908; I = 934.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.2813; X0 = 0.2274; X1 = 3.5021; a = 0.2031; m = 2.7615; delta0 = 0.14; density = 1.3670E+01; } else if (material == "Cm") { ZA = 0.3886; I = 939.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.3097; X0 = 0.2484; X1 = 3.5160; a = 0.2026; m = 2.7579; delta0 = 0.14; density = 1.3510E+01; } else if (material == "Bk") { ZA = 0.3926; I = 952.0; I_gas = 1.0000; I_lors = 1.1300; C = -6.2912; X0 = 0.2378; X1 = 3.5186; a = 0.2019; m = 2.7560; delta0 = 0.14; density = 1.4000E+01; } else if (material == "air") { ZA = 0.4992; I = 85.7; I_gas = 1.0000; I_lors = 1.0000; C = -10.5961; X0 = 1.7418; X1 = 4.2759; a = 0.1091; m = 3.3994; delta0 = 0.00; density = 1.2048E-03; } else if (material == "Al2O3") { ZA = 0.4904; I = 145.2; I_gas = 1.0000; I_lors = 1.0000; C = -3.5682; X0 = 0.0402; X1 = 2.8665; a = 0.0850; m = 3.5458; delta0 = 0.00; density = 3.9700E+00; } else if (material == "B2O3") { ZA = 0.4884; I = 99.6; I_gas = 1.0000; I_lors = 1.0000; C = -3.6027; X0 = 0.1843; X1 = 2.7379; a = 0.1155; m = 3.3832; delta0 = 0.00; density = 1.8120E+00; } else if (material == "CaO") { ZA = 0.4993; I = 176.1; I_gas = 1.0000; I_lors = 1.0000; C = -4.1209; X0 = -0.0172; X1 = 3.0171; a = 0.1213; m = 3.1936; delta0 = 0.00; density = 3.3000E+00; } else if (material == "CaSO4") { ZA = 0.4995; I = 152.3; I_gas = 1.0000; I_lors = 1.0000; C = -3.9388; X0 = 0.0587; X1 = 3.1229; a = 0.0771; m = 3.4495; delta0 = 0.00; density = 2.9600E+00; } else if (material == "CO2") { ZA = 0.4999; I = 85.0; I_gas = 1.0000; I_lors = 1.0000; C = -10.1537; X0 = 1.6294; X1 = 4.1825; a = 0.1177; m = 3.3227; delta0 = 0.00; density = 1.8421E-03; } else if (material == "pyrex") { ZA = 0.4971; I = 134.0; I_gas = 1.0000; I_lors = 1.0000; C = -3.9708; X0 = 0.1479; X1 = 2.9933; a = 0.0827; m = 3.5224; delta0 = 0.00; density = 2.2300E+00; } else if (material == "kapton") { ZA = 0.5126; I = 79.6; I_gas = 1.0000; I_lors = 1.0000; C = -3.3497; X0 = 0.1509; X1 = 2.5631; a = 0.1597; m = 3.1921; delta0 = 0.00; density = 1.4200E+00; } else if (material == "MgO") { ZA = 0.4962; I = 143.8; I_gas = 1.0000; I_lors = 1.0000; C = -3.6404; X0 = 0.0575; X1 = 2.8580; a = 0.0831; m = 3.5968; delta0 = 0.00; density = 3.5800E+00; } else if (material == "CH4") { ZA = 0.6233; I = 41.7; I_gas = 1.0000; I_lors = 1.0000; C = -9.5243; X0 = 1.6263; X1 = 3.9716; a = 0.0925; m = 3.6257; delta0 = 0.00; density = 6.6715E-04; } else if (material == "polystyrene") { ZA = 0.5377; I = 68.7; I_gas = 1.0000; I_lors = 1.0000; C = -3.2999; X0 = 0.1647; X1 = 2.5031; a = 0.1645; m = 3.2224; delta0 = 0.00; density = 1.0600E+00; } else if (material == "K2O") { ZA = 0.4883; I = 189.9; I_gas = 1.0000; I_lors = 1.0000; C = -4.6463; X0 = 0.0480; X1 = 3.0110; a = 0.1679; m = 3.0121; delta0 = 0.00; density = 2.3200E+00; } else if (material == "SiO2") { ZA = 0.4993; I = 139.2; I_gas = 1.0000; I_lors = 1.0000; C = -4.0029; X0 = 0.1385; X1 = 3.0025; a = 0.0841; m = 3.5064; delta0 = 0.00; density = 2.3200E+00; } else if (material == "Na2O") { ZA = 0.4840; I = 148.8; I_gas = 1.0000; I_lors = 1.0000; C = -4.1892; X0 = 0.1652; X1 = 2.9793; a = 0.0750; m = 3.6943; delta0 = 0.00; density = 2.2700E+00; } else if (material == "water") { ZA = 0.5551; I = 75.0; I_gas = 1.0000; I_lors = 1.0000; C = -3.5017; X0 = 0.2400; X1 = 2.8004; a = 0.0912; m = 3.4773; delta0 = 0.00; density = 1.0000E+00; } else if (material == "water vapor") { ZA = 0.5551; I = 71.6; I_gas = 1.0000; I_lors = 1.0000; C = -10.5962; X0 = 1.7952; X1 = 4.3437; a = 0.0810; m = 3.5901; delta0 = 0.00; density = 7.5618E-04; } else if (material == "As2O3") { ZA = 0.4549; I = 276.6; I_gas = 1.0000; I_lors = 1.0000; C = -4.9606; X0 = 0.2000; X1 = 3.0000; a = 0.1840; m = 3.0000; delta0 = 0.00; density = 3.8600E+00; } else if (material == "BaO") { ZA = 0.4174; I = 451.1; I_gas = 1.0000; I_lors = 1.0000; C = -5.6349; X0 = 0.3370; X1 = 3.0000; a = 0.2162; m = 3.0000; delta0 = 0.00; density = 5.7000E+00; } else if (material == "SrO") { ZA = 0.4439; I = 326.4; I_gas = 1.0000; I_lors = 1.0000; C = -4.9259; X0 = 0.2000; X1 = 3.0000; a = 0.1824; m = 3.0000; delta0 = 0.00; density = 5.7000E+00; } else if (material == "C1720") { ZA = 0.4967; I = 141.0; I_gas = 1.0000; I_lors = 1.0000; C = -3.9477; X0 = 0.2000; X1 = 3.0000; a = 0.1379; m = 3.0000; delta0 = 0.00; density = 2.5300E+00; } else if (material == "GE180") { ZA = 0.4829; I = 171.8; I_gas = 1.0000; I_lors = 1.0000; C = -4.2834; X0 = 0.2000; X1 = 3.0000; a = 0.1532; m = 3.0000; delta0 = 0.00; density = 2.7600E+00; } else if (material == "He3") { ZA = 0.6631; I = 41.8; I_gas = 1.0000; I_lors = 1.1300; C = -11.1393; X0 = 2.2017; X1 = 3.6122; a = 0.1344; m = 5.8347; delta0 = 0.00; density = 1.2533E-04; } // end insert here else { cerr << "(fBB) Unknown material: " << material << endl; } if (parameter == "I") { output = I; } else if (parameter == "ZA") { output = ZA; } else if (parameter == "C") { output = C; } else if (parameter == "X0") { output = X0; } else if (parameter == "X1") { output = X1; } else if (parameter == "a") { output = a; } else if (parameter == "m") { output = m; } else if (parameter == "delta0") { output = delta0; } else if (parameter == "density") { output = density; } else if (parameter == "I_gas") { output = I_gas; } else if (parameter == "I_lors") { output = I_lors; } else { cerr << "(fBB) Unknown paramter: " << parameter << endl; } return output; } // mean or most probable collisonal loss in MeV for ELECTRON beams only // (positrons, protons, & alphas all require a different formula) // material = name of material // p = momentum of electron in MeV*c // rho = density in g/cm^3 // xthick = thickness of material in cm // type = "mean" for mean loss calculated from Bethe-Bloch equation // type = "mp" for most probably loss calculated by Landau Double_t collision_loss(TString material, Double_t p, Double_t rho, Double_t xthick, TString type = "mp") { Double_t ZA = fBB(material,"ZA"); // mol/g Double_t I = fBB(material,"I")/1.0E6; // eV -> MeV Double_t me = pc_m_e("MeV"); // MeV Double_t gamma = TMath::Sqrt(1.0+p*p/me/me); Double_t beta = TMath::Sqrt(1.0-1.0/gamma/gamma); Double_t xi = fBB_a(ZA,beta)*rho*xthick; // (MeV/cm^2/g)*(g/cm^3)*(cm) = MeV Double_t X = TMath::Log10(p/me); Double_t m = fBB(material,"m"); Double_t C = fBB(material,"C"); Double_t rho0 = fBB(material,"density"); // g/cm^3 Double_t X_rho = 0.5*TMath::Log10(rho/rho0); // shift due to density difference Double_t Xa = -C/2.0/TMath::Log(10.0) - X_rho; Double_t X0 = fBB(material,"X0") - X_rho; Double_t X1 = fBB(material,"X1") - X_rho; Double_t delta0 = fBB(material,"delta0"); Double_t delta = fBB_delta(X,Xa,X0,X1,delta0,m); Double_t term1 = 2.0*TMath::Log(p/I); Double_t g = 0.0; if (type == "mode" || type == "most" || type == "mp" || type == "most probable" || type == "landau") { g = TMath::Log(2.0*xi/me); g -= beta*beta; g += 0.198; // this term wrong in original Landau paper } else { Double_t F = (1.0+2.0/gamma-1.0/gamma/gamma)*TMath::Log(2.0); F -= 0.125*(1.0-1.0/gamma)*(1.0-1.0/gamma); F -= 1.0/gamma/gamma; g = TMath::Log(gamma-1.0) - F; } // cout << "xi = " << xi << endl; // cout << "beta = " << beta << endl; // cout << "xi*beta^2 = " << xi*beta*beta << endl; // cout << "X = " << X << endl; // cout << "term1 = " << term1 << endl; // cout << "density effect = " << delta << endl; // cout << "g = " << g << endl; return xi*(term1 - delta + g); }