#include "TObject.h" // define the Cryo class and make it inherit from TObject so that we can write // Cryo to a ROOT file class Cryo : public TObject { private: Double_t HEMT_noise_temp, gains_db[12], noise_figures_db[12], gains_lin[12], noise_figures_lin[12], total_gains_db[12], total_noise_figures_lin[12], total_noise_figures_db[12], gain_cascade[12], gains_db[12]; void Init(); void DoCascade(); public: Double_t Temperature, NoisePower; void Print() const; void GetTemperature(); void Cryo::GetTemperature(){ this->Init(); this->DoCascade(); double noise_power=-94.; Temperature = pow(10.,(noise_power-total_gains_db[12-1]-total_noise_figures_db[12-1])/10.)/1.38e-20; printf("Cryo temperature is %f\n", Temperature); NoisePower = noise_power-total_gains_db[12-1]-total_noise_figures_db[12-1]; printf("input power (dBm/Hz) is %f\n", NoisePower); } void Cryo::Print() const { printf("Cryo says hi\n"); } void Cryo::Init(){ gains_db[0]=30.0; gains_db[1]=-10.0; gains_db[2]=0.0; gains_db[3]=60.0; gains_db[4]=0.; gains_db[5]=-6.0; gains_db[6]=-1.0; gains_db[7]=34.0; gains_db[8]=0.0; gains_db[9]=-1.0; gains_db[10]=-8.5; gains_db[11]=0.0; noise_figures_db[0]=0.3; noise_figures_db[1]=10.5; noise_figures_db[2]=0.; noise_figures_db[3]=1.5; noise_figures_db[4]=0.; noise_figures_db[5]=8.5; noise_figures_db[6]=1.; noise_figures_db[7]=2.; noise_figures_db[8]=0.; noise_figures_db[9]=1.; noise_figures_db[10]=10.; noise_figures_db[11]=1.; } void Cryo::DoCascade(){ this->Init(); for (Int_t i=0; i<12; i++) { gains_lin[i]=pow(10.,gains_db[i]/10.); noise_figures_lin[i]=pow(10.,noise_figures_db[i]/10.); } for (Int_t i=0; i<12; i++) { for (Int_t j=0; j