00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 #ifndef STAR_StFtpcDbReader
00106 #define STAR_StFtpcDbReader
00107
00108 #include "StMaker.h"
00109
00110 #include "TObject.h"
00111
00112 #include "tables/St_ftpcDimensions_Table.h"
00113 #include "tables/St_ftpcPadrowZ_Table.h"
00114 #include "tables/St_ftpcAsicMap_Table.h"
00115 #include "tables/St_ftpcEField_Table.h"
00116 #include "tables/St_ftpcVDrift_Table.h"
00117 #include "tables/St_ftpcDeflection_Table.h"
00118 #include "tables/St_ftpcdVDriftdP_Table.h"
00119 #include "tables/St_ftpcdDeflectiondP_Table.h"
00120 #include "tables/St_ftpcAmpSlope_Table.h"
00121 #include "tables/St_ftpcAmpOffset_Table.h"
00122 #include "tables/St_ftpcTimeOffset_Table.h"
00123 #include "tables/St_ftpcGas_Table.h"
00124 #include "tables/St_ftpcDriftField_Table.h"
00125 #include "tables/St_ftpcElectronics_Table.h"
00126 #include "tables/St_ftpcInnerCathode_Table.h"
00127 #include "tables/St_ftpcClusterGeom_Table.h"
00128
00129
00130 class StFtpcDbReader : public TObject
00131 {
00132
00133 protected:
00134
00135 Int_t mNumberOfPadrows;
00136 Int_t mNumberOfPadrowsPerSide;
00137 Int_t mFirstPadrowToSearch;
00138 Int_t mLastPadrowToSearch;
00139 Int_t mNumberOfSectors;
00140 Int_t mFirstSectorToSearch;
00141 Int_t mLastSectorToSearch;
00142 Int_t mNumberOfPads;
00143 Int_t mNumberOfTimebins;
00144 Int_t mMinTimeBin;
00145 Int_t mMinTimeBinMed;
00146 Int_t mMinTimeBinOut;
00147 Int_t mMaxTimeLength;
00148 Int_t mMaxTimeLengthMed;
00149 Int_t mMaxTimeLengthOut;
00150 Int_t mMaxPadLength;
00151 Int_t mMaxPadLengthMed;
00152 Int_t mMaxPadLengthOut;
00153 Int_t mDeltaTime;
00154 Int_t mDeltaPad;
00155
00156 Bool_t mEastIsInverted;
00157 Bool_t mAsic2EastNotInverted;
00158
00159 Float_t mPhiOrigin;
00160 Float_t mPhiPerSector;
00161 Float_t mRadiansPerPad;
00162 Float_t mRadiansPerBoundary;
00163 Float_t mSensitiveVolumeInnerRadius;
00164 Float_t mSensitiveVolumeOuterRadius;
00165
00166 Float_t *mPadrowZPosition;
00167
00168 Int_t mNumberOfMagboltzBins;
00169 Int_t mMaximumNumberOfMagboltzBins;
00170 Float_t *mMagboltzEField;
00171 Float_t *mMagboltzVDrift;
00172 Float_t *mMagboltzDeflection;
00173 Float_t *mMagboltzdVDriftdP;
00174 Float_t *mMagboltzdDeflectiondP;
00175
00176 Float_t mPercentAr;
00177 Float_t mPercentCO2;
00178 Float_t mPercentNe;
00179 Float_t mPercentHe;
00180 Float_t mGasGain;
00181 Float_t mGasAttenuation;
00182 Float_t mGasIonizationPotential;
00183 Float_t mBaseTemperature;
00184 Float_t mBasePressure;
00185 Float_t mPressureOffset;
00186 Float_t mTemperatureDifference;
00187 Float_t mDefaultTemperatureWest;
00188 Float_t mDefaultTemperatureEast;
00189 Float_t mMinPressure;
00190 Float_t mMaxPressure;
00191 Float_t mMinGasTemperature;
00192 Float_t mMaxGasTemperature;
00193 Float_t mAdjustAverageWest;
00194 Float_t mAdjustAverageEast;
00195
00196 Float_t mTZero;
00197 Float_t mLaserTZero;
00198 Float_t mMicrosecondsPerTimebin;
00199 Bool_t mSwapRDO6RDO7East;
00200
00201 Float_t mOffsetCathodeWest;
00202 Float_t mOffsetCathodeEast;
00203 Float_t mAngleOffsetWest;
00204 Float_t mAngleOffsetEast;
00205
00206 Float_t mDriftCathodeVoltage;
00207 Float_t mMinimumDriftField;
00208 Float_t mStepSizeDriftField;
00209 Float_t mRadiusTimesField;
00210
00211 Float_t mMinChargeWindow;
00212
00213 ftpcAmpSlope_st *ampslopeTable;
00214 ftpcAmpOffset_st *ampoffsetTable;
00215 ftpcTimeOffset_st *timeoffsetTable;
00216 ftpcGas_st* gasTable;
00217 ftpcElectronics_st *electronicsTable;
00218
00219 Float_t mPadLength;
00220 Float_t mPadPitch;
00221
00222 private:
00223
00224 Bool_t mLaserRun;
00225
00226 Int_t FtpcAmpOffset(St_ftpcAmpOffset *ampoffset);
00227 Int_t FtpcAmpSlope(St_ftpcAmpSlope *ampslope);
00228 Int_t FtpcAsicMap(St_ftpcAsicMap *asicmap);
00229 Int_t FtpcClusterGeom(St_ftpcClusterGeom *clustergeo);
00230 Int_t FtpcdDeflectiondP(St_ftpcdDeflectiondP *ddeflectiondp);
00231 Int_t FtpcDeflection(St_ftpcDeflection *deflection);
00232 Int_t FtpcDimensions(St_ftpcDimensions *dimensions);
00233 Int_t FtpcDriftField(St_ftpcDriftField *driftfield);
00234 Int_t FtpcdVDriftdP(St_ftpcdVDriftdP *dvdriftdp);
00235 Int_t FtpcEField(St_ftpcEField *efield);
00236 Int_t FtpcElectronics(St_ftpcElectronics *electronics);
00237 Int_t FtpcGas(St_ftpcGas *gas);
00238 Int_t FtpcInnerCathode(St_ftpcInnerCathode *cathode);
00239 Int_t FtpcPadrowZ(St_ftpcPadrowZ *zrow);
00240 Int_t FtpcTimeOffset(St_ftpcTimeOffset *timeoffset);
00241 Int_t FtpcVDrift(St_ftpcVDrift *vdrift);
00242
00243 public:
00244
00245 StFtpcDbReader(St_ftpcDimensions *dimensions,
00246 St_ftpcPadrowZ *zrow,
00247 St_ftpcAsicMap *asicmap,
00248 St_ftpcEField *efield,
00249 St_ftpcVDrift *vdrift,
00250 St_ftpcDeflection *deflection,
00251 St_ftpcdVDriftdP *dvdriftdp,
00252 St_ftpcdDeflectiondP *ddeflectiondp,
00253 St_ftpcAmpSlope *ampslope,
00254 St_ftpcAmpOffset *ampoffset,
00255 St_ftpcTimeOffset *timeoffset,
00256 St_ftpcDriftField *driftfield,
00257 St_ftpcGas *gas,
00258 St_ftpcElectronics *electronics,
00259 St_ftpcInnerCathode *cathode,
00260 St_ftpcClusterGeom *clustergeo);
00261
00262 StFtpcDbReader(St_ftpcDimensions *dimensions,
00263 St_ftpcAsicMap *asicmap,
00264 St_ftpcEField *efield,
00265 St_ftpcVDrift *vdrift,
00266 St_ftpcDeflection *deflection,
00267 St_ftpcdVDriftdP *dvdriftdp,
00268 St_ftpcdDeflectiondP *ddeflectiondp,
00269 St_ftpcGas *gas,
00270 St_ftpcDriftField *driftfield,
00271 St_ftpcElectronics *electronics,
00272 St_ftpcAmpSlope *ampslope,
00273 St_ftpcAmpOffset *ampoffset,
00274 St_ftpcTimeOffset *timeoffset,
00275 St_ftpcInnerCathode *cathode);
00276
00277 StFtpcDbReader(St_ftpcDimensions *dimensions,
00278 St_ftpcPadrowZ *zrow,
00279 St_ftpcEField *efield,
00280 St_ftpcVDrift *vdrift,
00281 St_ftpcDeflection *deflection,
00282 St_ftpcdVDriftdP *dvdriftdp,
00283 St_ftpcdDeflectiondP *ddeflectiondp,
00284 St_ftpcGas *gas,
00285 St_ftpcDriftField *driftfield);
00286
00287 StFtpcDbReader(St_ftpcDimensions *dimensions,
00288 St_ftpcPadrowZ *zrow,
00289 St_ftpcEField *efield,
00290 St_ftpcVDrift *vdrift,
00291 St_ftpcDeflection *deflection,
00292 St_ftpcdVDriftdP *dvdriftdp,
00293 St_ftpcdDeflectiondP *ddeflectiondp,
00294 St_ftpcElectronics *electronics,
00295 St_ftpcGas *gas,
00296 St_ftpcDriftField *driftfield);
00297
00298 StFtpcDbReader(St_ftpcDimensions *dimensions,
00299 St_ftpcPadrowZ *zrow );
00300
00301
00302 ~StFtpcDbReader();
00303
00304 Int_t returnCode;
00305
00306 Float_t padrowZPosition(Int_t i);
00307 Float_t magboltzEField(Int_t i);
00308 Float_t magboltzVDrift(Int_t i,Int_t padrow);
00309 Float_t magboltzDeflection(Int_t i, Int_t padrow);
00310 Float_t magboltzdVDriftdP(Int_t i, Int_t padrow);
00311 Float_t magboltzdDeflectiondP(Int_t i, Int_t padrow);
00312 Float_t amplitudeSlope(Int_t i, Int_t padrow);
00313 Float_t amplitudeOffset(Int_t i, Int_t padrow);
00314 Float_t timeOffset(Int_t i, Int_t padrow);
00315
00316
00317 Int_t setMagboltzEField(Int_t i, Float_t newvalue);
00318 Int_t setMagboltzVDrift(Int_t i, Int_t padrow, Float_t newvalue);
00319 Int_t setMagboltzDeflection(Int_t i, Int_t padrow, Float_t newvalue);
00320 Int_t setMagboltzdVDriftdP(Int_t i, Int_t padrow, Float_t newvalue);
00321 Int_t setMagboltzdDeflectiondP(Int_t i, Int_t padrow, Float_t newvalue);
00322 Int_t setMicrosecondsPerTimebin(Float_t newvalue);
00323 Bool_t setLaserRun(Bool_t laserRun);
00324
00325
00326 Int_t numberOfPadrows() {return mNumberOfPadrows;}
00327 Int_t numberOfPadrowsPerSide() {return mNumberOfPadrowsPerSide;}
00328 Int_t firstPadrowToSearch() {return mFirstPadrowToSearch;}
00329 Int_t lastPadrowToSearch() {return mLastPadrowToSearch;}
00330 Int_t numberOfSectors() {return mNumberOfSectors;}
00331 Int_t firstSectorToSearch() {return mFirstSectorToSearch;}
00332 Int_t lastSectorToSearch() {return mLastSectorToSearch;}
00333 Int_t numberOfPads() {return mNumberOfPads;}
00334 Int_t numberOfTimebins() {return mNumberOfTimebins;}
00335
00336 Bool_t EastIsInverted() {return mEastIsInverted;}
00337 Bool_t Asic2EastNotInverted() {return mAsic2EastNotInverted;}
00338 Bool_t SwapRDO6RDO7East() {return mSwapRDO6RDO7East;}
00339
00340 Int_t numberOfMagboltzBins() {return mNumberOfMagboltzBins;}
00341 Int_t maximumNumberOfMagboltzBins() {return mMaximumNumberOfMagboltzBins;}
00342
00343 Float_t phiOrigin() {return mPhiOrigin;}
00344 Float_t phiPerSector() {return mPhiPerSector;}
00345 Float_t phiEnd() {return mPhiOrigin+mPhiPerSector;}
00346 Float_t padLength() {return mPadLength;}
00347 Float_t padPitch() {return mPadPitch;}
00348 Float_t radiansPerPad() {return mRadiansPerPad;}
00349 Float_t radiansPerBoundary() {return mRadiansPerBoundary;}
00350 Float_t sensitiveVolumeInnerRadius() {return mSensitiveVolumeInnerRadius;}
00351 Float_t sensitiveVolumeOuterRadius() {return mSensitiveVolumeOuterRadius;}
00352
00353 Float_t percentAr() {return mPercentAr;}
00354 Float_t percentCO2() {return mPercentCO2;}
00355 Float_t percentNe() {return mPercentNe;}
00356 Float_t percentHe() {return mPercentHe;}
00357 Float_t gasGain() {return mGasGain;}
00358 Float_t gasAttenuation() {return mGasAttenuation;}
00359 Float_t gasIonizationPotential() {return mGasIonizationPotential;}
00360 Float_t baseTemperature() {return mBaseTemperature;}
00361 Float_t basePressure() {return mBasePressure;}
00362 Float_t pressureOffset() {return mPressureOffset;}
00363 Float_t temperatureDifference(){return mTemperatureDifference;}
00364 Float_t defaultTemperatureWest(){return mDefaultTemperatureWest;}
00365 Float_t defaultTemperatureEast(){return mDefaultTemperatureEast;}
00366 Float_t minPressure() {return mMinPressure;}
00367 Float_t maxPressure() {return mMaxPressure;}
00368 Float_t minGasTemperature() {return mMinGasTemperature;}
00369 Float_t maxGasTemperature() {return mMaxGasTemperature;}
00370 Float_t adjustAverageWest() {return mAdjustAverageWest;}
00371 Float_t adjustAverageEast() {return mAdjustAverageEast;}
00372
00373 Float_t tZero() {return mTZero;}
00374 Float_t laserTZero() {return mLaserTZero;}
00375 Float_t microsecondsPerTimebin() {return mMicrosecondsPerTimebin;}
00376
00377 Float_t driftCathodeVoltage() {return mDriftCathodeVoltage;}
00378 Float_t minimumDriftField() {return mMinimumDriftField;}
00379 Float_t stepSizeDriftField() {return mStepSizeDriftField;}
00380 Float_t radiusTimesField() {return mRadiusTimesField;}
00381
00382 Float_t offsetCathodeWest() {return mOffsetCathodeWest;}
00383 Float_t offsetCathodeEast() {return mOffsetCathodeEast;}
00384 Float_t angleOffsetWest() {return mAngleOffsetWest;}
00385 Float_t angleOffsetEast() {return mAngleOffsetEast;}
00386
00387 Int_t minTimeBin() {return mMinTimeBin;}
00388 Int_t minTimeBinMed() {return mMinTimeBinMed;}
00389 Int_t minTimeBinOut() {return mMinTimeBinOut;}
00390 Int_t maxTimeLength() {return mMaxTimeLength;}
00391 Int_t maxPadLength() {return mMaxPadLength;}
00392 Int_t maxTimeLengthMed() {return mMaxTimeLengthMed;}
00393 Int_t maxPadLengthMed() {return mMaxPadLengthMed;}
00394 Int_t maxTimeLengthOut() {return mMaxTimeLengthOut;}
00395 Int_t maxPadLengthOut() {return mMaxPadLengthOut;}
00396 Int_t deltaTime() {return mDeltaTime;}
00397 Int_t deltaPad() {return mDeltaPad;}
00398 Float_t minChargeWindow() {return mMinChargeWindow;}
00399
00400 };
00401
00402 #endif