00001
00002 #include "FarDetRawRateDump.h"
00003
00004 #include "MessageService/MsgService.h"
00005 #include "MinosObjectMap/MomNavigator.h"
00006 #include "JobControl/JobCommand.h"
00007 #include "JobControl/JobCModuleRegistry.h"
00008
00009 #include "RawData/RawRecord.h"
00010 #include "RawData/RawDigit.h"
00011 #include "RawData/RawChannelId.h"
00012 #include "RawData/RawDaqHeaderBlock.h"
00013 #include "RawData/RawSnarlHeaderBlock.h"
00014 #include "RawData/RawDigitDataBlock.h"
00015 #include "RawData/RawTpSinglesSummaryBlock.h"
00016 #include "RawData/RawLiTpmtDigitsBlock.h"
00017
00018 #include "Validity/VldContext.h"
00019 #include "Validity/VldTimeStamp.h"
00020
00021 #include "TDirectory.h"
00022
00023 CVSID("$Id: FarDetRawRateDump.cxx,v 1.2 2006/04/21 17:40:11 blake Exp $");
00024
00025 JOBMODULE(FarDetRawRateDump,"FarDetRawRateDump","FarDetRawRateDump");
00026
00027 FarDetRawRateDump::FarDetRawRateDump() :
00028 fRawRateFile(0),
00029 fRawRateTree(0),
00030 fTimeInterval(300)
00031 {
00032
00033 }
00034
00035 FarDetRawRateDump::~FarDetRawRateDump()
00036 {
00037
00038 }
00039
00040 void FarDetRawRateDump::BeginJob()
00041 {
00042 MSG("FarDetRawRateDump",Msg::kInfo) << " *** FarDetRawRateDump::BeginJob() *** " << endl;
00043
00044 Int_t i,j;
00045
00046 Int_t tmpPlnMask[16][24]={
00047 { 1, 5, 9, 13, 17, -1,
00048 21, 25, 29, 33, 37, 41,
00049 45, 49, 53, 57, 61, -999,
00050 -1, -1, -1, -1, -1, -1 },
00051 { 45, 49, 53, 57, 61, -999,
00052 21, 25, 29, 33, 37, 41,
00053 1, 5, 9, 13, 17, -1,
00054 -1, -1, -1, -1, -1, -1 },
00055 { 65, 69, 73, 77, 81, -1,
00056 85, 89, 93, 97, 101, 105,
00057 109, 113, 117, 121, 125, -999,
00058 -1, -1, -1, -1, -1, -1 },
00059 { 109, 113, 117, 121, 125, -999,
00060 85, 89, 93, 97, 101, 105,
00061 65, 69, 73, 77, 81, -1,
00062 -1, -1, -1, -1, -1, -1 },
00063 { 129, 133, 137, 141, 145, -1,
00064 149, 153, 157, 161, 165, 169,
00065 173, 177, 181, 185, 189, -999,
00066 -1, -1, -1, -1, -1, -1 },
00067 { 173, 177, 181, 185, 189, -999,
00068 149, 153, 157, 161, 165, 169,
00069 129, 133, 137, 141, 145, -1,
00070 -1, -1, -1, -1, -1, -1 },
00071 { 193, 197, 201, 205, 209, -1,
00072 213, 217, 221, 225, 229, -1,
00073 233, 237, 241, 245, -1, -999,
00074 -1, -1, -1, -1, -1, -1 },
00075 { 233, 237, 241, 245, -1, -999,
00076 213, 217, 221, 225, 229, -1,
00077 193, 197, 201, 205, 209, -1,
00078 -1, -1, -1, -1, -1, -1 },
00079 { 250, 254, 258, 262, 266, -999,
00080 270, 274, 278, 282, 286, 290,
00081 294, 298, 302, 306, 310, -1,
00082 -1, -1, -1, -1, -1, -1 },
00083 { 294, 298, 302, 306, 310, -1,
00084 270, 274, 278, 282, 286, 290,
00085 250, 254, 258, 262, 266, -999,
00086 -1, -1, -1, -1, -1, -1 },
00087 { 314, 318, 322, 326, 330, -1,
00088 334, 338, 342, 346, 350, 354,
00089 358, 362, 366, 370, 374, -999,
00090 -1, -1, -1, -1, -1, -1 },
00091 { 358, 362, 366, 370, 374, -1,
00092 334, 338, 342, 346, 350, 354,
00093 314, 318, 322, 326, 330, -999,
00094 -1, -1, -1, -1, -1, -1 },
00095 { 378, 382, 386, 390, 394, -1,
00096 398, 402, 406, 410, 414, 418,
00097 422, 426, 430, 434, 438, -999,
00098 -1, -1, -1, -1, -1, -1 },
00099 { 422, 426, 430, 434, 438, -1,
00100 398, 402, 406, 410, 414, 418,
00101 378, 382, 386, 390, 394, -999,
00102 -1, -1, -1, -1, -1, -1 },
00103 { 442, 446, 450, 454, 458, -999,
00104 462, 466, 470, 474, 478, 482,
00105 -1, -1, -1, -1, -1, -1,
00106 -1, -1, -1, -1, -1, -1 },
00107 { -1, -1, -1, -1, -1, -1,
00108 462, 466, 470, 474, 478, 482,
00109 442, 446, 450, 454, 458, -999,
00110 -1, -1, -1, -1, -1, -1 },
00111 };
00112
00113 for(i=0;i<16;i++){
00114 for(j=0;j<24;j++){
00115 PlnMask[i][j]=tmpPlnMask[i][j];
00116 }
00117 }
00118
00119 Int_t tmpPlnChMask[22]={
00120 0, 0,
00121 1, 0, 1, 0,
00122 1, 0, 1, 0,
00123 0, 1, 0, 1,
00124 0, 1, 0, 1,
00125 0, 0, 0, 0
00126 };
00127
00128 for(i=0;i<22;i++){
00129 PlnChMask[i]=tmpPlnChMask[i];
00130 }
00131
00132 Int_t tmpVaCh2Shld[16][6]={
00133 { 12,-1,-1,10,11,11 },
00134 { 12,-1,-1,10,11,11 },
00135 { 22,-1,-1,20,21,21 },
00136 { 22,-1,-1,20,21,21 },
00137 { 12,-1,-1,10,11,11 },
00138 { 12,-1,-1,10,11,11 },
00139 { 22,-1,-1,20,21,21 },
00140 { 22,-1,-1,20,21,21 },
00141 { 32,-1,-1,30,31,31 },
00142 { 32,-1,-1,30,31,31 },
00143 { 40,41,41,42,-1,-1 },
00144 { 40,41,41,42,-1,-1 },
00145 { 32,-1,-1,30,31,31 },
00146 { 32,-1,-1,30,31,31 },
00147 { 40,41,41,42,-1,-1 },
00148 { 40,41,41,42,-1,-1 },
00149 };
00150
00151 for(i=0;i<16;i++){
00152 for(j=0;j<6;j++){
00153 VaCh2Shld[i][j]=tmpVaCh2Shld[i][j];
00154 }
00155 }
00156
00157 Int_t tmpVaCh2LiBox[22]={
00158 -1, -1,
00159 14, 1, 7, 8,
00160 4, 10, 13, 3,
00161 11, 5, 2, 12,
00162 0, 6, 9, 15,
00163 -1, -1, -1, -1
00164 };
00165
00166 for(i=0;i<22;i++){
00167 VaCh2LiBox[i]=tmpVaCh2LiBox[i];
00168 }
00169
00170 run=-1; timeframe=-1; time0=-1;
00171
00172 if(fTimeInterval<1) fTimeInterval=1; if(fTimeInterval>1000) fTimeInterval=1000;
00173
00174 }
00175
00176 JobCResult FarDetRawRateDump::Ana(const MomNavigator *mom)
00177 {
00178 MSG("FarDetRawRateDump",Msg::kDebug) << " *** FarDetRawRateDump::Ana(...) *** " << endl;
00179
00180 JobCResult result(JobCResult::kPassed);
00181
00182 TIter momitr(mom->FragmentIter());
00183 while(const RawRecord* rawrec = dynamic_cast<const RawRecord*>(momitr())){
00184
00185 MSG("FarDetRawRateDump",Msg::kDebug) << " *** NEXT RECORD *** " << endl;
00186
00187 TIter rawrecitr = rawrec->GetRawBlockIter();
00188 TObject *tob;
00189 while((tob = rawrecitr())){
00190 MSG("FarDetRawRateDump",Msg::kDebug) << tob->GetName() << endl;
00191
00192 if(tob->InheritsFrom("RawDaqHeaderBlock")){
00193 MSG("FarDetRawRateDump",Msg::kDebug) << " ... found RawDaqHeaderBlock " << endl;
00194 RawDaqHeaderBlock* rdb = (RawDaqHeaderBlock*)(tob);
00195 run = rdb->GetRun();
00196 timeframenum = rdb->GetTimeFrameNum();
00197 if(time0<0) time0=((VldTimeStamp)(rdb->GetTimeStamp())).GetSec();
00198 tnanosec=((VldTimeStamp)(rdb->GetTimeStamp())).GetNanoSec();
00199 MSG("FarDetRawRateDump",Msg::kDebug) << " ... timeframe=" << timeframenum << endl;
00200 }
00201
00202 if(tob->InheritsFrom("RawSnarlHeaderBlock")){
00203 MSG("FarDetRawRateDump",Msg::kDebug) << " ... found RawSnarlHeaderBlock " << endl;
00204 RawSnarlHeaderBlock* rdb = (RawSnarlHeaderBlock*)(tob);
00205 run = rdb->GetRun();
00206 timeframenum = rdb->GetTimeFrameNum();
00207 if(time0<0) time0=((VldTimeStamp)(rdb->GetTriggerTime())).GetSec();
00208 tnanosec = ((VldTimeStamp)(rdb->GetTriggerTime())).GetNanoSec();
00209 MSG("FarDetRawRateDump",Msg::kDebug) << " ... timeframe=" << timeframenum << endl;
00210 }
00211
00212 if(timeframe>=0 && !fRawRateFile){
00213
00214
00215
00216 TString mystring("fardet.rate.root");
00217 TDirectory* tmpd = gDirectory;
00218 fRawRateFile = new TFile(mystring.Data(),"RECREATE");
00219 fRawRateTree = new TTree("RawRateTree","RawRateTree");
00220 fRawRateTree->SetAutoSave(100);
00221 fRawRateTree->Branch("run",&run,"run/I");
00222 fRawRateTree->Branch("crate",&crate,"crate/I");
00223 fRawRateTree->Branch("varc",&varc,"varc/I");
00224 fRawRateTree->Branch("vmm",&vmm,"vmm/I");
00225 fRawRateTree->Branch("vaadc",&vaadc,"vaadc/I");
00226 fRawRateTree->Branch("vachip",&vachip,"vachip/I");
00227 fRawRateTree->Branch("plane",&plane,"plane/I");
00228 fRawRateTree->Branch("shld",&shld,"shld/I");
00229 fRawRateTree->Branch("timeframe",&timeframe,"timeframe/I");
00230 fRawRateTree->Branch("time",&time,"time/I");
00231 fRawRateTree->Branch("date",&date,"date/I");
00232 fRawRateTree->Branch("chargePreTrig",&chargePreTrig,"chargePreTrig/I");
00233 fRawRateTree->Branch("ratePreTrig",&ratePreTrig,"ratePreTrig/I");
00234 fRawRateTree->Branch("entriesPreTrig",&entriesPreTrig,"entriesPreTrig/I");
00235 fRawRateTree->Branch("chargePostTrig",&chargePostTrig,"chargePostTrig/I");
00236 fRawRateTree->Branch("ratePostTrig",&ratePostTrig,"ratePostTrig/I");
00237 fRawRateTree->Branch("entriesPostTrig",&entriesPostTrig,"entriesPostTrig/I");
00238 fRawRateTree->Branch("rateSingles",&rateSingles,"rateSingles/I");
00239 fRawRateTree->Branch("maxSingles",&maxSingles,"maxSingles/I");
00240 fRawRateTree->Branch("minSingles",&minSingles,"minSingles/I");
00241 fRawRateTree->Branch("entriesSingles",&entriesSingles,"entriesSingles/I");
00242 fRawRateTree->Branch("deadchip",&deadchip,"deadchip/I");
00243 fRawRateTree->Branch("LI",&LI,"LI/I");
00244 gDirectory = tmpd;
00245 }
00246
00247 if(timeframe<0||timeframenum>=timeframe+fTimeInterval){
00248 MSG("FarDetRawRateDump",Msg::kDebug) << " ADDING ENTRY FOR TIME = " << time << endl;
00249 if(timeframe>=0 && fRawRateFile){
00250 for(crate=0;crate<16;crate++){
00251 for(varc=0;varc<3;varc++){
00252 for(vmm=0;vmm<6;vmm++){
00253 for(vaadc=0;vaadc<2;vaadc++){
00254 for(vachip=0;vachip<3;vachip++){
00255
00256 chargePreTrig=0; ratePreTrig=0; entriesPreTrig=0;
00257 chargePostTrig=0; ratePostTrig=0; entriesPostTrig=0;
00258 rateSingles=0; maxSingles=0; minSingles=0; entriesSingles=0;
00259 deadchip=0; LI=0;
00260
00261 vachannel=0; plane=-1; shld=-1;
00262 plane=PlnMask[crate][6*varc+vmm]+vaadc;
00263 if(plane>=1&&(vachip==1||(vachip==2&&PlnChMask[vachannel]==1))) plane+=2;
00264 if(plane<-1) shld=VaCh2Shld[crate][3*vaadc+vachip];
00265 if( plane>0||shld>0 ){
00266 entriesPreTrig=VaMaskEntriesPreTrig[crate][varc][vmm][vaadc][vachip];
00267 ratePreTrig=VaMaskRatePreTrig[crate][varc][vmm][vaadc][vachip];
00268 if(VaMaskRatePreTrig[crate][varc][vmm][vaadc][vachip]>0){
00269 chargePreTrig=(Int_t)((Double_t)VaMaskChargePreTrig[crate][varc][vmm][vaadc][vachip]/(Double_t)VaMaskRatePreTrig[crate][varc][vmm][vaadc][vachip]);
00270 }
00271
00272 entriesPostTrig=VaMaskEntriesPostTrig[crate][varc][vmm][vaadc][vachip];
00273 ratePostTrig=VaMaskRatePostTrig[crate][varc][vmm][vaadc][vachip];
00274 if(VaMaskRatePostTrig[crate][varc][vmm][vaadc][vachip]>0){
00275 chargePostTrig=(Int_t)((Double_t)VaMaskChargePostTrig[crate][varc][vmm][vaadc][vachip]/(Double_t)VaMaskRatePostTrig[crate][varc][vmm][vaadc][vachip]);
00276 }
00277
00278 entriesSingles=VaMaskEntriesSingles[crate][varc][vmm][vaadc][vachip];
00279 maxSingles=VaMaskMaxSingles[crate][varc][vmm][vaadc][vachip];
00280 minSingles=VaMaskMinSingles[crate][varc][vmm][vaadc][vachip];
00281 if(VaMaskEntriesSingles[crate][varc][vmm][vaadc][vachip]>0){
00282 rateSingles=(Int_t)((Double_t)VaMaskRateSingles[crate][varc][vmm][vaadc][vachip]/(Double_t)VaMaskEntriesSingles[crate][varc][vmm][vaadc][vachip]);
00283 }
00284 deadchip=VaMaskDead[crate][varc][vmm][vaadc][vachip];
00285 LI=VaMaskLI[crate][varc][vmm][vaadc][vachip];
00286
00287 TDirectory* tmpd = gDirectory;
00288 fRawRateFile->cd();
00289 fRawRateTree->Fill();
00290 gDirectory = tmpd;
00291 }
00292 }
00293 }
00294 }
00295 }
00296 }
00297 MSG("FarDetRawRateDump",Msg::kInfo) << " *** " << timeframe << " seconds *** " << endl;
00298 }
00299 for(crate=0;crate<16;crate++){
00300 for(varc=0;varc<3;varc++){
00301 for(vmm=0;vmm<6;vmm++){
00302 for(vaadc=0;vaadc<2;vaadc++){
00303 for(vachip=0;vachip<3;vachip++){
00304 VaMaskDead[crate][varc][vmm][vaadc][vachip]=0;
00305 VaMaskLI[crate][varc][vmm][vaadc][vachip]=0;
00306
00307 VaMaskChargePreTrig[crate][varc][vmm][vaadc][vachip]=0;
00308 VaMaskRatePreTrig[crate][varc][vmm][vaadc][vachip]=0;
00309 VaMaskEntriesPreTrig[crate][varc][vmm][vaadc][vachip]=0;
00310
00311 VaMaskChargePostTrig[crate][varc][vmm][vaadc][vachip]=0;
00312 VaMaskRatePostTrig[crate][varc][vmm][vaadc][vachip]=0;
00313 VaMaskEntriesPostTrig[crate][varc][vmm][vaadc][vachip]=0;
00314
00315 VaMaskRateSingles[crate][varc][vmm][vaadc][vachip]=0;
00316 VaMaskMaxSingles[crate][varc][vmm][vaadc][vachip]=-1;
00317 VaMaskMinSingles[crate][varc][vmm][vaadc][vachip]=-1;
00318 VaMaskEntriesSingles[crate][varc][vmm][vaadc][vachip]=0;
00319 }
00320 }
00321 }
00322 }
00323 }
00324 timeframe=timeframenum;
00325 date=(time0+timeframe-1059696000)/(3600*24);
00326 time=(time0+timeframe-1059696000)%(3600*24);
00327 }
00328
00329 if(tob->InheritsFrom("RawTpSinglesSummaryBlock")){
00330 MSG("FarDetRawRateDump",Msg::kDebug) << " ... found RawTpSinglesSummaryBlock " << endl;
00331 RawTpSinglesSummaryBlock* rdb = (RawTpSinglesSummaryBlock*)(tob);
00332 typedef std::map<RawChannelId,UInt_t> RCIdToRateMap;
00333 const RCIdToRateMap& rates = rdb->GetRates();
00334 RCIdToRateMap::const_iterator rateItr = rates.begin();
00335 RCIdToRateMap::const_iterator rateEnd = rates.end();
00336 while ( rateItr != rateEnd ) {
00337 RawChannelId rawch = rateItr->first;
00338 rate = rateItr->second;
00339 crate = rawch.GetCrate();
00340 varc = rawch.GetVarcId();
00341 vmm = rawch.GetVmm();
00342 vaadc = rawch.GetVaAdcSel();
00343 vachip = rawch.GetVaChip();
00344 if(crate<16 && varc<3 && vmm<6 && vaadc<2 && vachip<3){
00345 if(rate>50){
00346 VaMaskRateSingles[crate][varc][vmm][vaadc][vachip]+=rate;
00347 }
00348 else{
00349 VaMaskDead[crate][varc][vmm][vaadc][vachip]=1;
00350 }
00351 if( VaMaskMinSingles[crate][varc][vmm][vaadc][vachip]<0
00352 || rate<VaMaskMinSingles[crate][varc][vmm][vaadc][vachip] ){
00353 VaMaskMinSingles[crate][varc][vmm][vaadc][vachip]=rate;
00354 }
00355 if( VaMaskMaxSingles[crate][varc][vmm][vaadc][vachip]<0
00356 || rate>VaMaskMaxSingles[crate][varc][vmm][vaadc][vachip] ){
00357 VaMaskMaxSingles[crate][varc][vmm][vaadc][vachip]=rate;
00358 }
00359 VaMaskEntriesSingles[crate][varc][vmm][vaadc][vachip]+=1;
00360 }
00361 rateItr++;
00362 }
00363 }
00364
00365 if(tob->InheritsFrom("RawDigitDataBlock")){
00366 MSG("FarDetRawRateDump",Msg::kDebug) << " ... found RawDigitDataBlock " << endl;
00367 RawDigitDataBlock* rdb = (RawDigitDataBlock*)(tob);
00368
00369 TIter digitr = rdb->GetDatumIter();
00370 while(RawDigit *rd = (RawDigit*)(digitr())){
00371 if(rd){
00372 RawChannelId rawch = (RawChannelId)(rd->GetChannel());
00373 adc = rd->GetADC();
00374 tdc = rd->GetTDC();
00375 t = 1.5625*tdc;
00376 nanosec = t - tnanosec;
00377 crate = rawch.GetCrate();
00378 varc = rawch.GetVarcId();
00379 vmm = rawch.GetVmm();
00380 vaadc = rawch.GetVaAdcSel();
00381 vachip = rawch.GetVaChip();
00382 if(nanosec<-150){
00383 VaMaskChargePreTrig[crate][varc][vmm][vaadc][vachip]+=adc;
00384 VaMaskRatePreTrig[crate][varc][vmm][vaadc][vachip]+=1;
00385 }
00386 else{
00387 VaMaskChargePostTrig[crate][varc][vmm][vaadc][vachip]+=adc;
00388 VaMaskRatePostTrig[crate][varc][vmm][vaadc][vachip]+=1;
00389 }
00390 }
00391 }
00392
00393 for(crate=0;crate<16;crate++){
00394 for(varc=0;varc<3;varc++){
00395 for(vmm=0;vmm<6;vmm++){
00396 for(vaadc=0;vaadc<2;vaadc++){
00397 for(vachip=0;vachip<3;vachip++){
00398 VaMaskEntriesPreTrig[crate][varc][vmm][vaadc][vachip]+=1;
00399 VaMaskEntriesPostTrig[crate][varc][vmm][vaadc][vachip]+=1;
00400 }
00401 }
00402 }
00403 }
00404 }
00405 }
00406
00407 if(tob->InheritsFrom("RawLiTpmtDigitsBlock")){
00408 MSG("FarDetRawRateDump",Msg::kDebug) << " ... found RawLiTpmtDigitsBlock " << endl;
00409 RawLiTpmtDigitsBlock* rdb = (RawLiTpmtDigitsBlock*)(tob);
00410 Int_t ndigits = rdb->GetNumberOfDigits();
00411 for(Int_t n=0;n<ndigits;n++){
00412 RawDigit* rd = (RawDigit*)(rdb->At(n));
00413 if(rd){
00414 RawChannelId rawch = (RawChannelId)(rd->GetChannel());
00415
00416 crate = rawch.GetCrate();
00417 varc = rawch.GetVarcId();
00418 vmm = rawch.GetVmm();
00419 vaadc = rawch.GetVaAdcSel();
00420 vachip = rawch.GetVaChip();
00421 vachannel = rawch.GetVaChannel();
00422 LI = 2*(VaCh2LiBox[vachannel]/2);
00423
00424 if(LI>=0 && LI<16){
00425 for(crate=LI;crate<=LI+1;crate++){
00426 for(varc=0;varc<3;varc++){
00427 for(vmm=0;vmm<6;vmm++){
00428 for(vaadc=0;vaadc<2;vaadc++){
00429 for(vachip=0;vachip<3;vachip++){
00430 VaMaskLI[crate][varc][vmm][vaadc][vachip]=1;
00431 }
00432 }
00433 }
00434 }
00435 }
00436 }
00437
00438 }
00439 }
00440 }
00441
00442 }
00443 }
00444
00445
00446 MSG("FarDetRawRateDump",Msg::kDebug) << " *** FarDetRawRateDump::Ana( ) FINISHED *** " << endl;
00447
00448 return result;
00449
00450 }
00451
00452 const Registry& FarDetRawRateDump::DefaultConfig() const
00453 {
00454
00455 MSG("FarDetRawRateDump", Msg::kInfo) << " *** FarDetRawRateDump::DefaultConfig() *** " <<
00456 endl;
00457
00458 static Registry r;
00459 r.SetName("FarDetRawRateDump.config.default");
00460 r.UnLockValues();
00461 r.Set("TimeInterval",fTimeInterval);
00462 r.LockValues();
00463 MSG("FarDetRawRateDump", Msg::kInfo) << " *** TimeInterval = " << fTimeInterval << " *** " << endl;
00464
00465 return r;
00466 }
00467
00468 void FarDetRawRateDump::Config(const Registry &r)
00469 {
00470
00471 MSG("FarDetRawRateDump", Msg::kInfo) << " *** FarDetRawRateDump::Config() *** " << endl;
00472
00473 Int_t tmpint;
00474 if(r.Get("TimeInterval",tmpint)) fTimeInterval = tmpint;
00475 MSG("FarDetRawRateDump", Msg::kInfo) << " *** TimeInterval = " << fTimeInterval << " *** " << endl;
00476
00477 return;
00478 }
00479
00480 void FarDetRawRateDump::EndJob()
00481 {
00482 MSG("FarDetRawRateDump",Msg::kInfo) << " *** FarDetRawRateDump::EndJob() *** " << endl;
00483 if(fRawRateFile){
00484 this->PrintRunSummary();
00485 MSG("FarDetRawRateDump",Msg::kInfo) << " *** saving data to file *** " << endl;
00486 TDirectory* tmpddd = gDirectory;
00487 fRawRateFile->cd();
00488 fRawRateTree->Write();
00489 fRawRateFile->Close();
00490 gDirectory = tmpddd;
00491 MSG("FarDetRawRateDump",Msg::kInfo) << " *** data saved to file *** " << endl;
00492 }
00493 }
00494
00495 void FarDetRawRateDump::PrintRunSummary()
00496 {
00497 MSG("FarDetRawRateDump",Msg::kInfo) << " *** FarDetRawRateDump::PrintRunSummary() *** " << endl;
00498
00499 if(fRawRateFile){
00500 fRawRateTree->SetBranchAddress("run",&run);
00501 fRawRateTree->SetBranchAddress("crate",&crate);
00502 fRawRateTree->SetBranchAddress("varc",&varc);
00503 fRawRateTree->SetBranchAddress("vmm",&vmm);
00504 fRawRateTree->SetBranchAddress("vaadc",&vaadc);
00505 fRawRateTree->SetBranchAddress("vachip",&vachip);
00506 fRawRateTree->SetBranchAddress("plane",&plane);
00507 fRawRateTree->SetBranchAddress("shld",&shld);
00508 fRawRateTree->SetBranchAddress("timeframe",&timeframe);
00509 fRawRateTree->SetBranchAddress("time",&time);
00510 fRawRateTree->SetBranchAddress("date",&date);
00511 fRawRateTree->SetBranchAddress("chargePreTrig",&chargePreTrig);
00512 fRawRateTree->SetBranchAddress("ratePreTrig",&ratePreTrig);
00513 fRawRateTree->SetBranchAddress("entriesPreTrig",&entriesPreTrig);
00514 fRawRateTree->SetBranchAddress("chargePostTrig",&chargePostTrig);
00515 fRawRateTree->SetBranchAddress("ratePostTrig",&ratePostTrig);
00516 fRawRateTree->SetBranchAddress("entriesPostTrig",&entriesPostTrig);
00517 fRawRateTree->SetBranchAddress("rateSingles",&rateSingles);
00518 fRawRateTree->SetBranchAddress("maxSingles",&maxSingles);
00519 fRawRateTree->SetBranchAddress("minSingles",&minSingles);
00520 fRawRateTree->SetBranchAddress("entriesSingles",&entriesSingles);
00521 fRawRateTree->SetBranchAddress("deadchip",&deadchip);
00522 fRawRateTree->SetBranchAddress("LI",&LI);
00523
00524
00525 Int_t myrun=-1;
00526 Int_t DeadChipCtr[16][3][6][2][3];
00527
00528 for(crate=0;crate<16;crate++){
00529 for(varc=0;varc<3;varc++){
00530 for(vmm=0;vmm<6;vmm++){
00531 for(vaadc=0;vaadc<2;vaadc++){
00532 for(vachip=0;vachip<3;vachip++){
00533 DeadChipCtr[crate][varc][vmm][vaadc][vachip]=0;
00534 }
00535 }
00536 }
00537 }
00538 }
00539
00540 for(Int_t i=0;i<fRawRateTree->GetEntries();i++){
00541 fRawRateTree->GetEntry(i);
00542 if( plane>=0 || shld>=0 ){
00543
00544 if( deadchip>0 ){
00545 DeadChipCtr[crate][varc][vmm][vaadc][vachip]=1;
00546 }
00547
00548 }
00549 if(myrun<0&&run>0) myrun=run;
00550 }
00551
00552 MSG("FarDetRawRateDump",Msg::kInfo) << " *** List of Bad Chips ( Run=" << myrun << " ) *** " << endl;
00553 for(crate=0;crate<16;crate++){
00554 for(varc=0;varc<3;varc++){
00555 for(vmm=0;vmm<6;vmm++){
00556 for(vaadc=0;vaadc<2;vaadc++){
00557 for(vachip=0;vachip<3;vachip++){
00558
00559 if( DeadChipCtr[crate][varc][vmm][vaadc][vachip]==1 ){
00560 MSG("FarDetRawRateDump",Msg::kInfo) << crate << "-" << varc << "-" << vmm << "-" << vaadc << "-" << vachip << " (dead) " << endl;
00561 }
00562
00563 }
00564 }
00565 }
00566 }
00567 }
00568
00569 }
00570 }