ATLAS Offline Software
Loading...
Searching...
No Matches
CcawUtils.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef CcawUtils_H
6#define CcawUtils_H
7
8#include <cmath>
9
10namespace ccaw {
11
12 inline double sqr( double a) {return a*a;}
13
14 inline double area( double R) {return M_PI*R*R;}
15
16 inline double gaugeDiam( int gauge) { return 0.127e-3*pow(92, double(36-gauge)/39.0);}
17
18 inline double gaugeSurface( int gauge) { return M_PI*sqr(gaugeDiam(gauge))/4.;}
19
21 inline double ccawDensity() {
22 double dens_cu = 8.94e3; // kg/m3
23 double dens_al = 2.70e3; // kg/m3
24 return 0.1*dens_cu + 0.9*dens_al;
25 }
26
28 inline double conductorWeight( int gauge) { return gaugeSurface(gauge) * ccawDensity();}
29
33 inline double insulatorWeight( int gauge, double thick=90.e-6, double dens=1.27e3) {
34 double radius = gaugeDiam(gauge) / 2.;
35 return (area( radius+thick) - area( radius)) * dens;
36 }
37
38 inline double ccawResistivity(int gauge) {
39 double res_cu = 16.78e-9; // Ohm*m
40 double res_al = 28.2e-9; // Ohm*m
41
42 double s = gaugeSurface( gauge);
43 double R_al = res_al/(s*0.9);
44 double R_cu = res_cu/(s*0.1);
45
46 double invR = 1/R_al + 1/R_cu;
47 return 1./invR;
48 }
49
50 inline int closestResistivityCcawGauge( double res)
51 {
52 // start arbitrarily with gauge 22
53 int gauge = 22;
54 double oldres = ccawResistivity(gauge);
55 double newres;
56 if (res > oldres) {
57 do {
58 newres = ccawResistivity(++gauge);
59 if (newres > res) break;
60 oldres = newres;
61 } while (gauge < 37);
62 if ( fabs( 1-newres/res) < fabs( 1-res/oldres)) return gauge;
63 else return --gauge; // old gauge was closer
64 }
65 else {
66 do {
67 newres = ccawResistivity(--gauge);
68 if (newres < res) break;
69 oldres = newres;
70 } while (gauge > 14);
71 if ( fabs( 1-newres/res) < fabs( 1-res/oldres)) return gauge;
72 else return ++gauge; // old gauge was closer
73 }
74 }
75
76}
77#endif
#define M_PI
std::pair< std::vector< unsigned int >, bool > res
static Double_t a
#define sqr(t)
constexpr int pow(int base, int exp) noexcept
double ccawResistivity(int gauge)
Definition CcawUtils.h:38
double gaugeDiam(int gauge)
Definition CcawUtils.h:16
double gaugeSurface(int gauge)
Definition CcawUtils.h:18
double conductorWeight(int gauge)
Weight per unit of length for the CCAW conductor, in kg/meter.
Definition CcawUtils.h:28
double ccawDensity()
Units: kg/m3.
Definition CcawUtils.h:21
int closestResistivityCcawGauge(double res)
Definition CcawUtils.h:50
double insulatorWeight(int gauge, double thick=90.e-6, double dens=1.27e3)
Weight per unit of length for the insulator.
Definition CcawUtils.h:33
double area(double R)
Definition CcawUtils.h:14