00001 #include <assert.h>
00002 #include "StarChairDefs.h"
00003 #include "St_db_Maker/St_db_Maker.h"
00004
00005 #include "StDetectorDbFTPCGas.h"
00006 StDetectorDbFTPCGas* StDetectorDbFTPCGas::fgInstance = 0;
00007 #include "St_ftpcGasSystemC.h"
00008 MakeChairInstance(ftpcGasSystem,Calibrations/ftpc/ftpcGasSystem);
00009 #include "St_ftpcGasOutC.h"
00010 MakeChairInstance(ftpcGasOut,Calibrations/ftpc/ftpcGasOut);
00011 #include "St_ftpcVoltageC.h"
00012 MakeChairInstance(ftpcVoltage,Calibrations/ftpc/ftpcVoltage);
00013 #include "St_ftpcVoltageStatusC.h"
00014 MakeChairInstance(ftpcVoltageStatus,Calibrations/ftpc/ftpcVoltageStatus);
00015
00016 #include "St_tpcGasC.h"
00017 MakeChairInstance(tpcGas,Calibrations/tpc/tpcGas);
00018 #include "St_tpcGridLeakC.h"
00019 MakeChairInstance(tpcGridLeak,Calibrations/tpc/tpcGridLeak);
00020 #include "St_tpcOmegaTauC.h"
00021 MakeChairInstance(tpcOmegaTau,Calibrations/tpc/tpcOmegaTau);
00022 #include "St_tpcDriftVelocityC.h"
00023 MakeChairInstance(tpcDriftVelocity,Calibrations/tpc/tpcDriftVelocity);
00024 #include "St_TpcSecRowCorC.h"
00025 ClassImp(St_TpcSecRowCorC);
00026 #include "St_TpcSecRowBC.h"
00027 MakeChairInstance2(TpcSecRowCor,St_TpcSecRowBC,Calibrations/tpc/TpcSecRowB);
00028 #include "St_TpcSecRowCC.h"
00029 MakeChairInstance2(TpcSecRowCor,St_TpcSecRowCC,Calibrations/tpc/TpcSecRowC);
00030 #include "St_TpcSecRowXC.h"
00031 MakeChairInstance2(TpcSecRowCor,St_TpcSecRowXC,Calibrations/tpc/TpcSecRowX);
00032 #include "St_tpcCorrectionC.h"
00033 ClassImp(St_tpcCorrectionC);
00034
00035 Double_t St_tpcCorrectionC::CalcCorrection(Int_t i, Double_t x, Double_t z) {
00036 tpcCorrection_st *cor = ((St_tpcCorrection *) Table())->GetTable() + i;
00037 return SumSeries(cor, x, z);
00038 }
00039
00040 Double_t St_tpcCorrectionC::SumSeries(tpcCorrection_st *cor, Double_t x, Double_t z) {
00041 Double_t Sum = 0;
00042 if (! cor) return Sum;
00043 Int_t N = TMath::Abs(cor->npar)%100;
00044 if (N == 0) return Sum;
00045 static Double_t T0, T1, T2;
00046
00047 Double_t X = x;
00048 if (cor->npar < 0) X = TMath::Exp(x);
00049 else {
00050 switch (cor->type) {
00051 case 10:
00052 case 11:
00053 X = TMath::Log(x); break;
00054 case 1:
00055 if (cor->min < cor->max) X = -1 + 2*TMath::Max(0.,TMath::Min(1.,(X - cor->min)/( cor->max - cor->min)));
00056 break;
00057 case 2:
00058 if (cor->min < cor->max) X = TMath::Max(0.,TMath::Min(1.,(X - cor->min)/( cor->max - cor->min)));
00059 break;
00060 case 3:
00061 if (TMath::Abs(TMath::Abs(x) - 1) < 1.e-7) X = 0;
00062 else X = TMath::Log(1. - TMath::Abs(x));
00063 break;
00064 case 4:
00065 if (TMath::Abs(TMath::Abs(x) - 1) < 1.e-7) X = 0;
00066 else X = TMath::Sign(TMath::Log(1. - TMath::Abs(x)),x);
00067 break;
00068 default: X = x; break;
00069 }
00070 }
00071 if (cor->type != 1 && cor->type != 2 &&
00072 cor->min < cor->max) {
00073 if (X < cor->min) X = cor->min;
00074 if (X > cor->max) X = cor->max;
00075 }
00076 switch (cor->type) {
00077 case 1:
00078 T0 = 1;
00079 Sum = cor->a[0]*T0;
00080 if (N == 1) break;
00081 T1 = X;
00082 Sum += cor->a[1]*T1;
00083 for (int n = 2; n <= N; n++) {
00084 T2 = 2*X*T1 - T0;
00085 Sum += cor->a[n]*T2;
00086 T0 = T1;
00087 T1 = T2;
00088 }
00089 break;
00090 case 2:
00091 T0 = 1;
00092 Sum = cor->a[0]*T0;
00093 if (N == 1) break;
00094 T1 = 2*X - 1;
00095 Sum += cor->a[1]*T1;
00096 for (int n = 2; n <= N; n++) {
00097 T2 = 2*(2*X - 1)*T1 - T0;
00098 Sum += cor->a[n]*T2;
00099 T0 = T1;
00100 T1 = T2;
00101 }
00102 break;
00103 case 10:
00104 Sum = cor->a[N-1];
00105 for (int n = N-2; n>=0; n--) Sum = X*Sum + cor->a[n];
00106 Sum += TMath::Log(1. + cor->OffSet/x);
00107 Sum = TMath::Exp(Sum);
00108 Sum *= x;
00109 break;
00110 case 11:
00111 Sum = cor->a[1] + z*cor->a[2] + z*X*cor->a[3] + TMath::Exp(X*(cor->a[4] + X*(cor->a[5] + X*cor->a[6])));
00112 Sum *= TMath::Exp(-cor->a[0]);
00113 break;
00114 default:
00115 Sum = cor->a[N-1];
00116 for (int n = N-2; n>=0; n--) Sum = X*Sum + cor->a[n];
00117 break;
00118 }
00119 return Sum;
00120 }
00121 #include "St_TpcRowQC.h"
00122 MakeChairInstance2(tpcCorrection,St_TpcRowQC,Calibrations/tpc/TpcRowQ);
00123 #include "St_TpcDriftDistOxygenC.h"
00124 MakeChairInstance2(tpcCorrection,St_TpcDriftDistOxygenC,Calibrations/tpc/TpcDriftDistOxygen);
00125 #include "St_TpcMultiplicityC.h"
00126 MakeChairInstance2(tpcCorrection,St_TpcMultiplicityC,Calibrations/tpc/TpcMultiplicity);
00127 #include "St_TpcZCorrectionBC.h"
00128 MakeChairInstance2(tpcCorrection,St_TpcZCorrectionBC,Calibrations/tpc/TpcZCorrectionB);
00129 #include "St_TpcdXCorrectionBC.h"
00130 MakeChairInstance2(tpcCorrection,St_TpcdXCorrectionBC,Calibrations/tpc/TpcdXCorrectionB);
00131 #include "St_tpcPressureBC.h"
00132 MakeChairInstance2(tpcCorrection,St_tpcPressureBC,Calibrations/tpc/tpcPressureB);
00133 #include "St_tpcMethaneInC.h"
00134 MakeChairInstance2(tpcCorrection,St_tpcMethaneInC,Calibrations/tpc/tpcMethaneIn);
00135 #include "St_tpcGasTemperatureC.h"
00136 MakeChairInstance2(tpcCorrection,St_tpcGasTemperatureC,Calibrations/tpc/tpcGasTemperature);
00137 #include "St_tpcWaterOutC.h"
00138 MakeChairInstance2(tpcCorrection,St_tpcWaterOutC,Calibrations/tpc/tpcWaterOut);
00139 #include "St_TpcdChargeC.h"
00140 MakeChairInstance2(tpcCorrection,St_TpcdChargeC,Calibrations/tpc/TpcdCharge);
00141 #include "St_TpcZDCC.h"
00142 MakeChairInstance2(tpcCorrection,St_TpcZDCC,Calibrations/tpc/TpcZDC);
00143 #include "St_TpcSpaceChargeC.h"
00144 MakeChairInstance2(tpcCorrection,St_TpcSpaceChargeC,Calibrations/tpc/TpcSpaceCharge);
00145 #include "St_TpcPhiDirectionC.h"
00146 MakeChairInstance2(tpcCorrection,St_TpcPhiDirectionC,Calibrations/tpc/TpcPhiDirection);
00147 #include "St_TpcdEdxCorC.h"
00148 MakeChairInstance2(tpcCorrection,St_TpcdEdxCorC,Calibrations/tpc/TpcdEdxCor);
00149 #include "St_TpcLengthCorrectionBC.h"
00150 MakeChairInstance2(tpcCorrection,St_TpcLengthCorrectionBC,Calibrations/tpc/TpcLengthCorrectionB);
00151 #include "St_tpcEffectiveGeomC.h"
00152 MakeChairInstance(tpcEffectiveGeom,Calibrations/tpc/tpcEffectiveGeom);
00153 #include "St_tpcElectronicsC.h"
00154 MakeChairInstance(tpcElectronics,Calibrations/tpc/tpcElectronics);
00155 #include "St_tpcPedestalC.h"
00156 MakeChairInstance(tpcPedestal,Calibrations/tpc/tpcPedestal);
00157 #include "St_tpcPadResponseC.h"
00158 MakeChairInstance(tpcPadResponse,Calibrations/tpc/tpcPadResponse);
00159 #include "St_tpcSlowControlSimC.h"
00160 MakeChairInstance(tpcSlowControlSim,Calibrations/tpc/tpcSlowControlSim);
00161 #include "St_tpcHitErrorsC.h"
00162 MakeChairInstance(tpcHitErrors,Calibrations/tpc/tpcHitErrors);
00163 #include "St_tpcGainMonitorC.h"
00164 MakeChairInstance(tpcGainMonitor,Calibrations/tpc/tpcGainMonitor);
00165 #include "St_tpcHighVoltagesC.h"
00166 MakeChairInstance(tpcHighVoltages,Calibrations/tpc/tpcHighVoltages);
00167 #include "St_tpcPadrowT0C.h"
00168 MakeChairInstance(tpcPadrowT0,Calibrations/tpc/tpcPadrowT0);
00169 #include "St_tpcSectorT0offsetC.h"
00170 MakeChairInstance(tpcSectorT0offset,Calibrations/tpc/tpcSectorT0offset);
00171 #include "St_TpcAltroParametersC.h"
00172 MakeChairInstance(TpcAltroParameters,Calibrations/tpc/TpcAltroParameters);
00173 #include "St_tpcAltroParamsC.h"
00174 MakeChairInstance(tpcAltroParams,Calibrations/tpc/tpcAltroParams);
00175 #include "St_asic_thresholdsC.h"
00176 MakeChairInstance(asic_thresholds,Calibrations/tpc/asic_thresholds);
00177 #include "St_asic_thresholds_tpxC.h"
00178 MakeChairInstance(asic_thresholds_tpx,Calibrations/tpc/asic_thresholds_tpx);
00179 #include "St_tpcAnodeHVC.h"
00180 MakeChairInstance(tpcAnodeHV,Calibrations/tpc/tpcAnodeHV);
00181
00182 void St_tpcAnodeHVC::sockets(Int_t sector, Int_t padrow, Int_t &e1, Int_t &e2, Float_t &f2) {
00183 e1 = (sector-1)*19;
00184 e2 = e1;
00185 f2 = 0;
00186
00187
00188
00189 switch (padrow) {
00190 case 1: e1+= 1; e2+= 2; f2 = 0.00197; break;
00191 case 2: e1+= 2; break;
00192 case 3: e1+= 3; e2+= 2; f2 = 0.04547; break;
00193 case 4: e1+= 3; break;
00194 case 5: e1+= 4; break;
00195 case 6: e1+= 4; e2+= 5; f2 = 0.00007; break;
00196 case 7: e1+= 5; break;
00197 case 8: e1+= 6; e2+= 5; f2 = 0.04547; break;
00198 case 9: e1+= 6; break;
00199 case 10: e1+= 7; break;
00200 case 11: e1+= 8; e2+= 7; f2 = 0.33523; break;
00201 case 12: e1+= 8; break;
00202 case 13: e1+=17; break;
00203 case 14: e1+= 9; e2+=18; f2 = 0.00312; break;
00204 case 15:
00205 case 16: e1+= 9; break;
00206 case 17: e1+= 9; e2+=10; f2 = 0.40250; break;
00207 case 18:
00208 case 19:
00209 case 20: e1+=10; break;
00210 case 21: e1+=10; e2+=11; f2 = 0.40250; break;
00211 case 22:
00212 case 23:
00213 case 24: e1+=11; break;
00214 case 25: e1+=11; e2+=12; f2 = 0.40250; break;
00215 case 26:
00216 case 27:
00217 case 28: e1+=12; break;
00218 case 29: e1+=12; e2+=13; f2 = 0.40250; break;
00219 case 30:
00220 case 31:
00221 case 32: e1+=13; break;
00222 case 33: e1+=13; e2+=14; f2 = 0.40250; break;
00223 case 34:
00224 case 35:
00225 case 36: e1+=14; break;
00226 case 37: e1+=14; e2+=15; f2 = 0.40250; break;
00227 case 38:
00228 case 39:
00229 case 40: e1+=15; break;
00230 case 41: e1+=15; e2+=16; f2 = 0.40250; break;
00231 case 42:
00232 case 43:
00233 case 44: e1+=16; break;
00234 case 45: e1+=16; e2+=19; f2 = 0.40250; break;
00235 default: e1 = 0; e2 = 0; f2 = 0;
00236 }
00237 }
00238
00239 Float_t St_tpcAnodeHVC::voltagePadrow(Int_t sector, Int_t padrow) const {
00240 Int_t e1 = 0, e2 = 0;
00241 Float_t f2 = 0;
00242 St_tpcAnodeHVC::sockets(sector, padrow, e1, e2, f2);
00243 if (e1==0) return -99;
00244 Float_t v1=voltage(e1-1);
00245 if (f2 < 0.1) return v1;
00246 Float_t v2=voltage(e2-1);
00247 if (TMath::Abs(v2 - v1) > 40) return -99;
00248 if (TMath::Abs(v2 - v1) < 1) return v1;
00249
00250
00251 Float_t B = (padrow <= 13 ? 13.05e-3 : 10.26e-3);
00252 Float_t v_eff = TMath::Log((1.0-f2)*TMath::Exp(B*v1) + f2*TMath::Exp(B*v2)) / B;
00253 return v_eff;
00254 }
00255 #include "St_tpcAnodeHVavgC.h"
00256 MakeChairInstance(tpcAnodeHVavg,Calibrations/tpc/tpcAnodeHVavg);
00257
00258 Float_t St_tpcAnodeHVavgC::voltagePadrow(Int_t sector, Int_t padrow) const {
00259 Int_t e1 = 0, e2 = 0;
00260 Float_t f2 = 0;
00261 St_tpcAnodeHVC::sockets(sector, padrow, e1, e2, f2);
00262 if (e1==0) return -99;
00263 Float_t v1=voltage(e1-1);
00264 if (f2==0) return v1;
00265 Float_t v2=voltage(e2-1);
00266 if (v2==v1) return v1;
00267
00268
00269 Float_t B = (padrow <= 13 ? 13.05e-3 : 10.26e-3);
00270 Float_t v_eff = TMath::Log((1.0-f2)*TMath::Exp(B*v1) + f2*TMath::Exp(B*v2)) / B;
00271 return v_eff;
00272 }
00273
00274 #include "St_tpcPadGainT0C.h"
00275 MakeChairInstance(tpcPadGainT0,Calibrations/tpc/tpcPadGainT0);
00276 #include "St_tpcSlewingC.h"
00277 MakeChairInstance(tpcSlewing,Calibrations/tpc/tpcSlewing);
00278 #include "St_tpcAcChargeC.h"
00279 MakeChairInstance(tpcAcCharge,Calibrations/tpc/tpcAcCharge);
00280 #include "St_tpcAvCurrentC.h"
00281 MakeChairInstance(tpcAvCurrent,Calibrations/tpc/tpcAvCurrent);
00282 #include "St_TpcResponseSimulatorC.h"
00283 MakeChairInstance(TpcResponseSimulator,Calibrations/tpc/TpcResponseSimulator);
00284 #include "St_TpcPadCorrectionC.h"
00285 #include "TPolynomial.h"
00286 MakeChairInstance(TpcPadCorrection,Calibrations/tpc/TpcPadCorrection);
00287 St_TpcPadCorrectionC::St_TpcPadCorrectionC(St_TpcPadCorrection *table) : TChair(table), fFunc(0) {
00288 Int_t nrows = GetNRows();
00289 if (nrows) {
00290 fFunc = new TF1*[nrows]; memset(fFunc, 0, sizeof(fFunc));
00291 for (Int_t i = 0; i < nrows; i++) {
00292 Short_t io = Struct(i)->InOut;
00293 Short_t np = Struct(i)->npads;
00294 Short_t MuOrSigma = -1;
00295 if (Struct(i)->R == 8) MuOrSigma = 0;
00296 if (Struct(i)->R == 7) MuOrSigma = 1;
00297 if ((io < 1 || io > 2) ||
00298 (np < 1 || np > 7) ||
00299 (MuOrSigma < 0 || MuOrSigma > 1)) continue;
00300 Int_t indx = 2*(7*(io-1) + np-1)+MuOrSigma;
00301 assert(indx < nrows);
00302 fFunc[indx] = TPolynomial::MakePoly(Form("%s_%i_%i",Struct(i)->Type,np,io),Struct(i)->N-1,Struct(i)->R);
00303 fFunc[indx]->SetParameters(&Struct(i)->a0);
00304 }
00305 }
00306 }
00307 St_TpcPadCorrectionC::~St_TpcPadCorrectionC() {
00308 fgInstance = 0;
00309 if (fFunc) {
00310 Int_t nrows = GetNRows();
00311 for (Int_t i = 0; i < nrows; i++)
00312 SafeDelete(fFunc[i]);
00313 delete [] fFunc;
00314 }
00315 }
00316 #include "St_tpcGainCorrectionC.h"
00317 MakeChairInstance2(tpcCorrection,St_tpcGainCorrectionC,Calibrations/tpc/tpcGainCorrection);
00318 #include "StTpcHitErrors.h"
00319 StTpcHitErrors *StTpcHitErrors::fgInstance = 0;
00320 StTpcHitErrors *StTpcHitErrors::instance() {
00321 if (! fgInstance) {
00322 StMaker::GetChain()->GetDataBase("Calibrations/tpc/TpcHitErrors");
00323 cout << "StTpcHitErrors have been instantiated with" << endl
00324 << "StTpcHitErrors fnXZ(" << fgInstance->fXZ << "," << fgInstance->fSec << "," << fgInstance->fRow << ","
00325 << fgInstance->fMS << "," << fgInstance->fPrompt << ") = " << fgInstance->fNxz << endl;
00326 }
00327 return fgInstance;
00328 }
00329 Double_t StTpcHitErrors::calcError(Int_t iXZ, Int_t sec, Int_t row, Double_t _z, Double_t _eta, Double_t _tanl, Int_t Npads, Int_t Ntmbks, Double_t AdcL, Double_t xPad) {
00330 const static Double_t PitchLog[3] = {TMath::Log(0.335), TMath::Log(0.675), TMath::Log(5.78602945878541108e-01)};
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340 Int_t s = 0, r = 0, p = 0;
00341 if (sec > 12) s = 1;
00342 if (row > 13) r = 1;
00343 Int_t pitch = s;
00344 if (iXZ) pitch = 2;
00345 Double_t Vars[7] = {
00346 Npads,
00347 Ntmbks,
00348 -TMath::Tan(_eta),
00349 _tanl,
00350 _z,
00351 TMath::Log(AdcL),
00352 xPad};
00353 if (s) {
00354 Vars[3] = - Vars[3];
00355 Vars[4] = - Vars[4];
00356 }
00357 if (Vars[3] > 195) p = 1;
00358 TMDFParameters *mdf = GetSigmaSQ(iXZ,s,r,p);
00359 assert(mdf);
00360 Double_t valueLog = mdf->Eval(Vars);
00361 return TMath::Exp(2*(valueLog + PitchLog[pitch]));
00362 }
00363 #include "St_tpcStatusC.h"
00364 MakeChairInstance(tpcStatus,Calibrations/tpc/tpcStatus);
00365 #include "St_TpcAvgCurrentC.h"
00366 MakeChairInstance(TpcAvgCurrent,Calibrations/tpc/TpcAvgCurrent);
00367
00368 Int_t St_TpcAvgCurrentC::ChannelFromRow(Int_t row) {
00369 if (row < 1 || row > 45) return -1;
00370 if (row < 3) return 1;
00371 if (row < 7) return 2;
00372 if (row < 10) return 3;
00373 if (row < 14) return 4;
00374 if (row < 22) return 5;
00375 if (row < 30) return 6;
00376 if (row < 38) return 7;
00377 return 8;
00378 }
00379
00380 Int_t St_TpcAvgCurrentC::ChannelFromSocket(Int_t socket) {
00381 Int_t channel = -1;
00382 switch (socket) {
00383 case 1:
00384 case 2 : channel = 1; break;
00385 case 3:
00386 case 4: channel = 2; break;
00387 case 5:
00388 case 6: channel = 3; break;
00389 case 7:
00390 case 8:
00391 case 17: channel = 4; break;
00392 case 9:
00393 case 10:
00394 case 18: channel = 5; break;
00395 case 11:
00396 case 12: channel = 6; break;
00397 case 13:
00398 case 14: channel = 7; break;
00399 case 15:
00400 case 16:
00401 case 19: channel = 8; break;
00402 default: break;
00403 }
00404 return channel;
00405 }
00406
00407 #include "St_defaultTrgLvlC.h"
00408 MakeChairInstance(defaultTrgLvl,Calibrations/trg/defaultTrgLvl);
00409 #include "St_trigDetSumsC.h"
00410 St_trigDetSumsC *St_trigDetSumsC::fgInstance = 0;
00411 ClassImp(St_trigDetSumsC);
00412
00413 #include "St_tss_tssparC.h"
00414 MakeChairInstance(tss_tsspar,tpc/tsspars/tsspar);
00415
00416 Float_t St_tss_tssparC::gain(Int_t sec, Int_t row) {
00417 Int_t l = 0;
00418 Double_t V_nominal = 1390;
00419 if (row <= 13) {l = 1; V_nominal = 1170;}
00420 Float_t V = St_tpcAnodeHVavgC::instance()->voltagePadrow(sec,row);
00421 Float_t gain = 0;
00422 if (V > 0) {
00423 St_tpcGainCorrectionC *gC = St_tpcGainCorrectionC::instance();
00424 Double_t v = V - V_nominal;
00425 if (gC->GetNRows() < l || v < gC->min(l) || v > gC->max(l)) return gain;
00426 gain = TMath::Exp(gC->CalcCorrection(l,v));
00427 }
00428 return gain;
00429 }
00430
00431 #include "St_tpcMaxHitsC.h"
00432 MakeChairInstance(tpcMaxHits,Calibrations/tracker/tpcMaxHits);
00433
00434 #include "StDetectorDbRichScalers.h"
00435 StDetectorDbRichScalers *StDetectorDbRichScalers::fgInstance = 0;
00436 ClassImp(StDetectorDbRichScalers);
00437 #include "St_richvoltagesC.h"
00438 MakeChairInstance(richvoltages,Calibrations/rich/richvoltages);
00439 #include "St_y1MultC.h"
00440 MakeChairInstance(y1Mult,Calibrations/rich/y1Mult);
00441 #include "St_spaceChargeCorC.h"
00442 ClassImp(St_spaceChargeCorC);
00443 MakeChairInstance2(spaceChargeCor,St_spaceChargeCorR1C,Calibrations/rich/spaceChargeCor);
00444 MakeChairInstance2(spaceChargeCor,St_spaceChargeCorR2C,Calibrations/rich/spaceChargeCorR2);
00445
00446 #include "St_MagFactorC.h"
00447 MakeChairInstance(MagFactor,RunLog/MagFactor);
00448
00449 #include "St_starClockOnlC.h"
00450 MakeChairInstance(starClockOnl,RunLog/onl/starClockOnl);
00451
00452 starClockOnl_st *St_starClockOnlC::Struct(Int_t i) {
00453 starClockOnl_st *s = ((St_starClockOnl* ) instance()->Table())->GetTable();
00454 Int_t N = getNumRows();
00455 if (i >= 0 && i < N) return s + i;
00456 for (Int_t j = 0; j < N; j++, s++) if (s->frequency > 0) break;
00457 assert(s->frequency > 0 && s->frequency < 1e7);
00458 return s;
00459 }
00460 #include "St_starMagOnlC.h"
00461 MakeChairInstance(starMagOnl,RunLog/onl/starMagOnl);
00462 #include "St_beamInfoC.h"
00463 MakeChairInstance(beamInfo,RunLog/onl/beamInfo);
00464 #include "St_tpcRDOMasksC.h"
00465 MakeChairInstance(tpcRDOMasks,RunLog/onl/tpcRDOMasks);
00466
00467 UInt_t St_tpcRDOMasksC::getSectorMask(UInt_t sector) {
00468 UInt_t MASK = 0x0000;
00469
00470 if(sector < 1 || sector > 24 || getNumRows() == 0){
00471 LOG_WARN << "St_tpcRDOMasksC:: getSectorMask : return default mask for "
00472 << "sector= " << sector << " getNumRows()=" << getNumRows() << endm;
00473 return MASK;
00474 }
00475 MASK = mask(((sector + 1) / 2) - 1);
00476 if( sector % 2 == 0){
00477 MASK = MASK >> 6;
00478 }
00479
00480 MASK &= 0x000003F;
00481 if (sector == 16 && MASK == 0 && runNumber() > 8181000 && runNumber() < 9181000) MASK = 4095;
00482 return MASK;
00483 }
00484
00485 #include "St_triggerInfoC.h"
00486 MakeChairInstance(triggerInfo,RunLog/onl/triggerInfo);
00487 #include "St_triggerIDC.h"
00488 MakeChairInstance(triggerID,RunLog/onl/triggerID);
00489
00490 #include "St_trigPrescalesC.h"
00491 MakeChairOptionalInstance(trigPrescales,RunLog/onl/trigPrescales);
00492
00493 #include "St_L0TriggerInfoC.h"
00494 MakeChairInstance(L0TriggerInfo,RunLog/onl/L0TriggerInfo);
00495 #include "St_trigL3ExpandedC.h"
00496 MakeChairOptionalInstance(trigL3Expanded,RunLog/onl/trigL3Expanded);
00497 #include "St_dsmPrescalesC.h"
00498 MakeChairOptionalInstance(dsmPrescales,RunLog/onl/dsmPrescales);
00499 #include "St_additionalTriggerIDC.h"
00500 MakeChairOptionalInstance(additionalTriggerID,RunLog/onl/additionalTriggerID);
00501 #include "StDetectorDbTriggerID.h"
00502 StDetectorDbTriggerID *StDetectorDbTriggerID::fgInstance = 0;
00503
00504 map<Int_t,Float_t> StDetectorDbTriggerID::getTotalPrescales() {
00505 map<Int_t,Float_t> value;
00506
00507 for (UInt_t irow=0;irow<getDsmPrescalesNumRows(); ++irow) {
00508 Int_t trgId = getDsmPrescalesTrgId(irow);
00509 value[trgId] = Float_t(getDsmPrescalesDsmPrescale(irow));
00510 }
00511
00512 for (UInt_t irow=0; irow<getL0NumRows(); ++irow) {
00513 Int_t trgId = getL0OfflineTrgId(irow);
00514 map<Int_t,Float_t>::iterator p=value.find(trgId);
00515 if (p != value.end()) {
00516 (*p).second *= Float_t(getPsL0(irow));
00517 }
00518 else {
00519 value[trgId] = Float_t(getPsL0(irow));
00520 }
00521 }
00522
00523 for (UInt_t irow=0; irow<getSNumRows(); ++irow) {
00524 UInt_t idxTrigger = getIdxTrigger(irow);
00525 Int_t trgId = 0;
00526 for (UInt_t jrow=0; jrow<getIDNumRows(); ++jrow) {
00527 if (idxTrigger == getIdxTrg(jrow)) {
00528 trgId = getOfflineTrgId(jrow);
00529 break;
00530 }
00531 }
00532 map<Int_t,Float_t>::iterator p=value.find(trgId);
00533
00534 if (p != value.end()) {
00535 (*p).second *= Float_t(getPs(irow));
00536 }
00537 else {
00538 value[trgId] = Float_t(getPs(irow));
00539 }
00540 }
00541
00542
00543 for (UInt_t irow=0; irow<getTrigL3ExpandedNumRows(); ++irow) {
00544 Int_t oldtid = getTrigL3ExpandedL3TrgId(irow);
00545 Int_t newtid = getTrigL3ExpandedL3ExpandedTrgId(irow);
00546 Float_t l2ps = getTrigL3ExpandedL2Ps(irow);
00547
00548 map<Int_t,Float_t>::iterator p = value.find(oldtid);
00549 if (p!= value.end()) {
00550 value[newtid] = ((*p).second)*l2ps;
00551 }
00552 else {
00553 value[newtid] = l2ps;
00554 }
00555
00556 }
00557 return value;
00558 }
00559
00560 Float_t StDetectorDbTriggerID::getTotalPrescaleByTrgId(Int_t trgId) {
00561 map<Int_t,Float_t> theMap = getTotalPrescales();
00562 map<Int_t,Float_t>::const_iterator p = theMap.find(trgId);
00563 if (p != theMap.end()) {
00564 return (*p).second;
00565 }
00566 else {
00567 return 0;
00568 }
00569 }
00570
00571 #include "StDetectorDbIntegratedTriggerID.h"
00572 StDetectorDbIntegratedTriggerID *StDetectorDbIntegratedTriggerID::fgInstance = 0;
00573
00574 #include "St_trgTimeOffsetC.h"
00575 MakeChairInstance(trgTimeOffset,Conditions/trg/trgTimeOffset);
00576
00577 #include "St_tpcDimensionsC.h"
00578 MakeChairInstance(tpcDimensions,Geometry/tpc/tpcDimensions);
00579 #include "St_tpcWirePlanesC.h"
00580 MakeChairInstance(tpcWirePlanes,Geometry/tpc/tpcWirePlanes);
00581 #include "St_tpcSectorPositionC.h"
00582 ClassImp(St_tpcSectorPositionC);
00583 St_tpcSectorPositionC *St_tpcSectorPositionC::fgInstance = 0;
00584 St_tpcSectorPosition *St_tpcSectorPositionC::fgTables[24] = {0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0};
00585 St_tpcSectorPositionC *St_tpcSectorPositionC::instance() {
00586 if (fgInstance) return fgInstance;
00587 TDataSet *tpc = StMaker::GetChain()->GetDataBase("Geometry/tpc");
00588 assert(tpc);
00589 for (Int_t sec = 1; sec <= 24; sec++) {
00590 TString path = Form("Sector_%02i/tpcSectorPosition",sec);
00591 fgTables[sec-1] = (St_tpcSectorPosition *) tpc->Find(path.Data());
00592 if (! fgTables[sec-1]) {
00593 LOG_WARN << "St_tpcSectorPositionC::instance " << tpc->GetTitle() << "/" << path.Data()
00594 << "\twas not found" << endm;
00595 assert(fgTables[sec-1]);
00596 }
00597 {
00598 TDatime t[2];
00599 St_db_Maker::GetValidity(fgTables[sec-1],t);
00600 Int_t Nrows = fgTables[sec-1]->GetNRows();
00601 LOG_WARN << "St_tpcSectorPositionC::instance found table " << fgTables[sec-1]->GetName()
00602 << " with NRows = " << Nrows << " in db" << endm;
00603 LOG_WARN << "Validity:" << t[0].GetDate() << "/" << t[0].GetTime()
00604 << " ----- " << t[1].GetDate() << "/" << t[1].GetTime() << endm;
00605 fgTables[sec-1]->Print(0,1);
00606 }
00607 }
00608 fgInstance = new St_tpcSectorPositionC();
00609 return fgInstance;
00610 }
00611 #include "St_tpcFieldCageC.h"
00612 MakeChairInstance(tpcFieldCage,Geometry/tpc/tpcFieldCage);
00613 #include "St_tpcPadPlanesC.h"
00614 MakeChairInstance(tpcPadPlanes,Geometry/tpc/tpcPadPlanes);
00615 #include "St_tpcGlobalPositionC.h"
00616 MakeChairInstance(tpcGlobalPosition,Geometry/tpc/tpcGlobalPosition);
00617 #include "St_tpcFieldCageShortC.h"
00618 MakeChairInstance(tpcFieldCageShort,Geometry/tpc/tpcFieldCageShort);
00619 #include "St_tpcHVPlanesC.h"
00620 MakeChairInstance(tpcHVPlanes,Geometry/tpc/tpcHVPlanes);
00621 #include "St_SurveyC.h"
00622 ClassImp(St_SurveyC);
00623 #include "StSvtSurveyC.h"
00624 MakeChairInstance2(Survey,StSvtOnGlobal,Geometry/svt/SvtOnGlobal);
00625 MakeChairInstance2(Survey,StSvtShellOnGlobal,Geometry/svt/ShellOnGlobal);
00626 MakeChairInstance2(Survey,StSvtLadderOnSurvey,Geometry/svt/LadderOnSurvey);
00627 MakeChairInstance2(Survey,StSvtLadderOnShell,Geometry/svt/LadderOnShell);
00628 MakeChairInstance2(Survey,StSvtWaferOnLadder,Geometry/svt/WaferOnLadder);
00629 #include "StSsdSurveyC.h"
00630 MakeChairInstance2(Survey,StSsdOnGlobal,Geometry/ssd/SsdOnGlobal);
00631 MakeChairInstance2(Survey,StSsdSectorsOnGlobal,Geometry/ssd/SsdSectorsOnGlobal);
00632 MakeChairInstance2(Survey,StSsdLaddersOnSectors,Geometry/ssd/SsdLaddersOnSectors);
00633 MakeChairInstance2(Survey,StSsdWafersOnLadders,Geometry/ssd/SsdWafersOnLadders);
00634 #include "StTpcSurveyC.h"
00635 MakeChairInstance2(Survey,StTpcOuterSectorPosition,Geometry/tpc/TpcOuterSectorPosition);
00636 MakeChairInstance2(Survey,StTpcSuperSectorPosition,Geometry/tpc/TpcSuperSectorPosition);
00637
00638 const TGeoHMatrix &St_SurveyC::GetMatrix(Int_t i) {
00639 static TGeoHMatrix rot;
00640 rot.SetRotation(Rotation(i));
00641 rot.SetTranslation(Translation(i));
00642 return *&rot;
00643 }
00644
00645 void St_SurveyC::GetAngles(Double_t &phi, Double_t &the, Double_t &psi, Int_t i) {
00646 phi = the = psi = 0;
00647 Double_t cosDelta = (r00(i) + r11(i) + r22(i) - 1)/2;
00648 Double_t Delta = TMath::ACos(cosDelta);
00649 if (Delta < 0) Delta += 2*TMath::Pi();
00650 Double_t sinDelta2 = TMath::Sin(Delta/2);
00651 if (TMath::Abs(sinDelta2) < 1.e-7) return;
00652 Double_t c[3] = {
00653 (r21(i) - r12(i))/(2*sinDelta2),
00654 (r02(i) - r20(i))/(2*sinDelta2),
00655 (r10(i) - r01(i))/(2*sinDelta2)
00656 };
00657 Double_t u = TMath::ATan2(c[0],c[1]);
00658 Double_t v = TMath::ATan(c[2]*TMath::Tan(Delta/2));
00659 phi = (v - u)/2 - TMath::Pi()/2;
00660 psi = (v + u)/2 - TMath::Pi()/2;
00661 the = 2*TMath::ATan2(c[0]*TMath::Sin(v),c[2]*TMath::Sin(u));
00662 Double_t raddeg = 180./TMath::Pi();
00663 phi *= raddeg;
00664 the *= raddeg;
00665 psi *= raddeg;
00666 }
00667
00668 St_SurveyC *St_SurveyC::instance(const Char_t *name) {
00669 TString Name(name);
00670 if (Name == "SvtOnGlobal") return (St_SurveyC *) StSvtOnGlobal::instance();
00671 if (Name == "ShellOnGlobal") return (St_SurveyC *) StSvtShellOnGlobal::instance();
00672 if (Name == "LadderOnSurvey") return (St_SurveyC *) StSvtLadderOnSurvey::instance();
00673 if (Name == "LadderOnShell") return (St_SurveyC *) StSvtLadderOnShell::instance();
00674 if (Name == "WaferOnLadder") return (St_SurveyC *) StSvtWaferOnLadder::instance();
00675 if (Name == "SsdOnGlobal") return (St_SurveyC *) StSsdOnGlobal::instance();
00676 if (Name == "SsdSectorsOnGlobal") return (St_SurveyC *) StSsdSectorsOnGlobal::instance();
00677 if (Name == "SsdLaddersOnSectors") return (St_SurveyC *) StSsdLaddersOnSectors::instance();
00678 if (Name == "SsdWafersOnLadders") return (St_SurveyC *) StSsdWafersOnLadders::instance();
00679 if (Name == "TpcOuterSectorPosition") return (St_SurveyC *) StTpcOuterSectorPosition::instance();
00680 if (Name == "TpcSuperSectorPosition") return (St_SurveyC *) StTpcSuperSectorPosition::instance();
00681 return 0;
00682 }
00683
00684 #include "St_vertexSeedC.h"
00685 MakeChairInstance(vertexSeed,Calibrations/rhic/vertexSeed);
00686
00687 #include "St_tofGeomAlignC.h"
00688 MakeChairInstance(tofGeomAlign,Calibrations/tof/tofGeomAlign);
00689 #include "St_tofTrayConfigC.h"
00690 MakeChairInstance(tofTrayConfig,Calibrations/tof/tofTrayConfig);
00691 #include "St_tofStatusC.h"
00692 MakeChairInstance(tofStatus,Calibrations/tof/tofStatus);
00693
00694 #include "St_emcPedC.h"
00695 MakeChairInstance2(emcPed,St_bemcPedC,Calibrations/emc/y3bemc/bemcPed);
00696 MakeChairInstance2(emcPed,St_bprsPedC,Calibrations/emc/y3bprs/bprsPed);
00697 #include "St_emcStatusC.h"
00698 MakeChairInstance2(emcStatus,St_bemcStatusC,Calibrations/emc/y3bemc/bemcStatus);
00699 MakeChairInstance2(emcStatus,St_bprsStatusC,Calibrations/emc/y3bprs/bprsStatus);
00700 #include "St_emcCalibC.h"
00701 MakeChairInstance2(emcCalib,St_bemcCalibC,Calibrations/emc/y3bemc/bemcCalib);
00702 MakeChairInstance2(emcCalib,St_bprsCalibC,Calibrations/emc/y3bprs/bprsCalib);
00703 #include "St_emcGainC.h"
00704 MakeChairInstance2(emcGain,St_bemcGainC,Calibrations/emc/y3bemc/bemcGain);
00705 MakeChairInstance2(emcGain,St_bprsGainC,Calibrations/emc/y3bprs/bprsGain);
00706
00707 #include "St_smdPedC.h"
00708 MakeChairInstance2(smdPed,St_bsmdePedC,Calibrations/smd/y3bsmde/bsmdePed);
00709 MakeChairInstance2(smdPed,St_bsmdpPedC,Calibrations/smd/y3bsmdp/bsmdpPed);
00710 #include "St_smdStatusC.h"
00711 MakeChairInstance2(smdStatus,St_bsmdeStatusC,Calibrations/smd/y3bsmde/bsmdeStatus);
00712 MakeChairInstance2(smdStatus,St_bsmdpStatusC,Calibrations/smd/y3bsmdp/bsmdpStatus);
00713 #include "St_smdCalibC.h"
00714 MakeChairInstance2(smdCalib,St_bsmdeCalibC,Calibrations/smd/y3bsmde/bsmdeCalib);
00715 MakeChairInstance2(smdCalib,St_bsmdpCalibC,Calibrations/smd/y3bsmdp/bsmdpCalib);
00716 #include "St_smdGainC.h"
00717 MakeChairInstance2(smdGain,St_bsmdeGainC,Calibrations/smd/y3bsmde/bsmdeGain);
00718 MakeChairInstance2(smdGain,St_bsmdpGainC,Calibrations/smd/y3bsmdp/bsmdpGain);
00719 #include "St_emcTriggerStatusC.h"
00720 MakeChairInstance2(emcTriggerStatus,St_bemcTriggerStatusC,Calibrations/emc/trigger/bemcTriggerStatus);
00721 #include "St_emcTriggerPedC.h"
00722 MakeChairInstance2(emcTriggerPed,St_bemcTriggerPedC,Calibrations/emc/trigger/bemcTriggerPed);
00723 #include "St_emcTriggerLUTC.h"
00724 MakeChairInstance2(emcTriggerLUT,St_bemcTriggerLUTC,Calibrations/emc/trigger/bemcTriggerLUT);
00725 #include "St_bemcMapC.h"
00726 MakeChairInstance(bemcMap,Calibrations/emc/map/bemcMap);
00727 #include "St_bprsMapC.h"
00728 MakeChairInstance(bprsMap,Calibrations/prs/map/bprsMap);
00729 #include "St_bsmdeMapC.h"
00730 MakeChairInstance(bsmdeMap,Calibrations/smde/map/bsmdeMap);
00731 #include "St_bsmdpMapC.h"
00732 MakeChairInstance(bsmdpMap,Calibrations/smdp/map/bsmdpMap);