| 1 | /** | /** | 
| 2 | * FTrkQLook_EXPERT | * FTrkQLook_EXPERT.cxx | 
| 3 | * | * | 
| 4 | * autor: D.Fedele | * autor: D.Fedele | 
| 5 | * version 2.0 | * version v1r16 | 
| 6 | * Parameters: | * Parameters: | 
| 7 | *      file - the data file to analyze | *      file - the data file to analyze | 
| 8 | *      fromevent - first event to analyze | *      fromevent - first event to analyze | 
| 19 | #include <TLatex.h> | #include <TLatex.h> | 
| 20 | #include <TCanvas.h> | #include <TCanvas.h> | 
| 21 | #include <TGraph.h> | #include <TGraph.h> | 
| 22 |  | #include <TFile.h> | 
| 23 | #include <TTree.h> | #include <TTree.h> | 
| 24 | #include <TStyle.h> | #include <TStyle.h> | 
| 25 | // | // | 
| 26 | #include <physics/tracker/TrackerEvent.h> | #include <physics/tracker/TrackerEvent.h> | 
| 27 | #include <PscuHeader.h> | #include <PscuHeader.h> | 
| 28 | #include <EventHeader.h> | #include <EventHeader.h> | 
| 29 |  | #include <RunHeaderEvent.h> | 
| 30 | #include <TrkAlarmEvent.h> | #include <TrkAlarmEvent.h> | 
| 31 | #include <tsbt/TsbTRecord.h> | #include <tsbt/TsbTRecord.h> | 
| 32 | #include <tsbt/TsbTEvent.h> | #include <tsbt/TsbTEvent.h> | 
| 33 |  | #include <tsbb/TsbBRecord.h> | 
| 34 |  | #include <tsbb/TsbBEvent.h> | 
| 35 |  | #include <EventCounter.h> | 
| 36 |  | #include <PacketType.h> | 
| 37 | // | // | 
| 38 |  | #define MAXSTORAGE 50000 | 
|  | void stringcopy(TString& s1, const TString& s2, Int_t from=0, Int_t to=0){ |  | 
|  | if ( to == 0 ){ |  | 
|  | Int_t t2length = s2.Length(); |  | 
|  | s1 = ""; |  | 
|  | to = t2length; |  | 
|  | }; |  | 
|  | for (Int_t i = from; i<to; i++){ |  | 
|  | s1.Append(s2[i],1); |  | 
|  | }; |  | 
|  | }; |  | 
|  |  |  | 
| 39 |  |  | 
| 40 | void FTrkQLook_EXPERT(TString file,Int_t fromevent,Int_t toevent, TString outdir, TString outfile) | void FTrkQLook_EXPERT(TString file,Int_t fromevent,Int_t toevent, TString outdir, TString outfile) | 
| 41 | { | { | 
| 42 | // | // | 
| 43 | //   obtain information about the data file and select the output dir | //   obtain information about the data file and select the output dir | 
| 44 | const string filepath=file.Data(); | Int_t dwpos = file.Last('/'); | 
| 45 | Int_t dwpos = filepath.rfind("DW_"); | Int_t dwpos1 = file.Last('.'); | 
|  | Int_t dwpos1 = filepath.find(".root"); |  | 
|  | TString fpath=(filepath.c_str()); |  | 
| 46 | TString base,ffile ; | TString base,ffile ; | 
| 47 | stringcopy(ffile,fpath,dwpos,dwpos1); | ffile=file(dwpos+1,dwpos1-(dwpos+1)); | 
| 48 | stringcopy(base,fpath,0,dwpos); | if(dwpos>0) base=file(0,dwpos); | 
| 49 |  |  | 
| 50 | TString out; | TString out; | 
| 51 | if(outdir.Length()==0){ | if(outdir.Length()==0){ | 
| 53 | }else{ | }else{ | 
| 54 | out = outdir; | out = outdir; | 
| 55 | } | } | 
| 56 |  | if(out.Last('/')+1<out.Length()) out+="/"; | 
| 57 |  |  | 
| 58 | // | // | 
| 59 | // inizialise the variables and open the file | // inizialise the variables and open the file | 
| 60 | pamela::TsbTEvent  *event = 0; | pamela::TsbTEvent  *event = 0; | 
| 61 | pamela::TsbTRecord *record = 0; | pamela::TsbTRecord *record = 0; | 
| 62 |  | pamela::TsbBEvent  *Bevent = 0; | 
| 63 |  | pamela::TsbBRecord *Brecord = 0; | 
| 64 | pamela::tracker::TrackerEvent *te=0; | pamela::tracker::TrackerEvent *te=0; | 
| 65 | pamela::EventHeader *eh=0,*aleh=0; | pamela::EventHeader *eh=0,*aleh=0,*eH=0,*eT=0,*eB=0; | 
| 66 | pamela::PscuHeader *ph=0; | pamela::PscuHeader *ph=0,*pH=0; | 
| 67 | pamela::TrkAlarmEvent *al=0; | pamela::TrkAlarmEvent *al=0; | 
| 68 |  | pamela::RunHeaderEvent *reh=0; | 
| 69 |  | pamela::EventCounter *cod=0; | 
| 70 |  |  | 
| 71 |  | pamela::PacketType *pctp=0; | 
| 72 |  |  | 
| 73 | TFile *datafile = new TFile(file); | TFile *datafile = new TFile(file); | 
| 74 |  | if ( !datafile ){ | 
| 75 |  | printf("No data file, exiting...\n"); | 
| 76 |  | return; | 
| 77 |  | } | 
| 78 |  |  | 
| 79 | TTree *tree = (TTree*)datafile->Get("TsbT"); | TTree *tree = (TTree*)datafile->Get("TsbT"); | 
| 80 | tree->SetBranchAddress("TsbT",&event); | tree->SetBranchAddress("TsbT",&event); | 
| 81 |  | tree->SetBranchAddress("Header",&eT); | 
| 82 |  |  | 
| 83 |  | TTree *Btree = (TTree*)datafile->Get("TsbB"); | 
| 84 |  | Btree->SetBranchAddress("TsbB",&Bevent); | 
| 85 |  | Btree->SetBranchAddress("Header",&eB); | 
| 86 |  |  | 
| 87 | TTree *altr = (TTree*)datafile->Get("TrkAlarm"); | TTree *altr = (TTree*)datafile->Get("TrkAlarm"); | 
| 88 | altr->SetBranchAddress("TrkAlarm",&al); | altr->SetBranchAddress("TrkAlarm",&al); | 
| 92 | tr->SetBranchAddress("Tracker",&te); | tr->SetBranchAddress("Tracker",&te); | 
| 93 | tr->SetBranchAddress("Header",&eh); | tr->SetBranchAddress("Header",&eh); | 
| 94 |  |  | 
| 95 |  | TTree *otr  = (TTree*)datafile->Get("RunHeader"); | 
| 96 |  | otr->SetBranchAddress("Header",&eH); | 
| 97 |  | otr->SetBranchAddress("RunHeader",&reh); | 
| 98 |  |  | 
| 99 | Long64_t nevent = tr->GetEntries(); | Long64_t nevent = tr->GetEntries(); | 
| 100 |  | Long64_t neventH = otr->GetEntries(); | 
| 101 | Long64_t tnevent = tree->GetEntries(); | Long64_t tnevent = tree->GetEntries(); | 
| 102 |  | Long64_t bnevent = Btree->GetEntries(); | 
| 103 | Long64_t alnevent = altr->GetEntries(); | Long64_t alnevent = altr->GetEntries(); | 
| 104 | Int_t minevent=0; | Int_t minevent=0; | 
| 105 | Int_t maxevent=0; | Int_t maxevent=0; | 
| 106 |  |  | 
| 107 | printf("Number of total events: %lld\n",nevent); | printf("Number of total events: %lld\n",nevent); | 
| 108 |  | printf("Number of header events: %lld\n",neventH); | 
| 109 |  | printf("Number of TsbT events: %lld\n",tnevent); | 
| 110 |  | printf("Number of TsbB events: %lld\n",bnevent); | 
| 111 |  | printf("Number of TrkAlarm packet events: %lld\n",alnevent); | 
| 112 |  |  | 
| 113 | if (nevent<=0){ | if (nevent<=0){ | 
| 114 | datafile->Close(); | datafile->Close(); | 
| 136 | } else if (toevent > nevent) { | } else if (toevent > nevent) { | 
| 137 | maxevent = nevent; | maxevent = nevent; | 
| 138 | } else { | } else { | 
| 139 | maxevent = toevent+1; | maxevent = nevent; | 
| 140 | } | } | 
| 141 | nevent=maxevent-minevent ; | nevent=maxevent-minevent ; | 
| 142 | } | } | 
| 143 |  |  | 
| 144 |  | // | 
| 145 | if (fromevent!=0) | // information about the RunHeader | 
| 146 | printf("\n Scan of events from %i to %i ... \n",minevent,maxevent-1); | ULong64_t HOBT[neventH]; | 
| 147 | else | Int_t trk_cal_us[neventH]; | 
| 148 | printf("\n Scan of events from %i to %i ... \n",minevent+1,maxevent); | ULong_t acq_info[neventH]; | 
| 149 |  | Int_t countnboot=1; | 
| 150 |  | for (Int_t vi=0; vi<neventH;vi++){ | 
| 151 |  | HOBT[vi]=0; | 
| 152 |  | trk_cal_us[vi]=0; | 
| 153 |  | acq_info[vi]=0; | 
| 154 |  | } | 
| 155 |  | for (Int_t ev=0; ev<neventH; ev++){ | 
| 156 |  | otr->GetEntry(ev); | 
| 157 |  | pH = eH->GetPscuHeader(); | 
| 158 |  | HOBT[ev]= pH->GetOrbitalTime(); | 
| 159 |  | trk_cal_us[ev]=reh->TRK_CALIB_USED; | 
| 160 |  | acq_info[ev]=reh->ACQ_BUILD_INFO; | 
| 161 |  | if((HOBT[ev]<HOBT[ev-1]) && ev>0) | 
| 162 |  | countnboot+=1; | 
| 163 |  | } | 
| 164 |  | countnboot+=(Int_t)(2*nevent/MAXSTORAGE); | 
| 165 |  | //   printf("\ncountnboot=%d\n",countnboot); | 
| 166 |  |  | 
| 167 | // | // | 
| 168 | // other variables definitions | // other variables definitions | 
| 169 | stringstream oss1,oss2,oss3,oss4,fromfile,isfile,tit; | stringstream oss1,oss2,oss3,oss4,fromfile,isfile,tit; | 
|  | Int_t warning_dspnumber=0; |  | 
| 170 | Int_t ALARM=0; | Int_t ALARM=0; | 
| 171 | Int_t WARNING[12]; | Int_t WARNING[12]; | 
|  | const Int_t size=nevent; |  | 
|  | Int_t dsp=0; |  | 
|  | Double_t yd[size*12], yc[size*12], x[size], eventint[size]; |  | 
|  | Double_t yyc[size], hi=0, land[size*12][3], illum[size*12][3]; |  | 
| 172 |  |  | 
|  | TGraph *comprtime,*temp[5]; |  | 
|  | TGraph *eventnumb; |  | 
|  | TH1F *landau1[12],*landau2[12],*landau3[12],*illuminazione[12]; |  | 
|  | TPaveText *pt1; |  | 
|  | TPad *pt; |  | 
|  |  |  | 
| 173 | // | // | 
| 174 | // information about the entries for the temperatures | // information about the entries for the temperatures | 
| 175 | Int_t tmpSize=0,siztmp=0,maxsize=0; | Int_t tmpSize=0,siztmp=0,maxsize=0; | 
| 179 | maxsize+=tmpSize; | maxsize+=tmpSize; | 
| 180 | } | } | 
| 181 | const Int_t tsize=maxsize; | const Int_t tsize=maxsize; | 
| 182 | Int_t tempt[tsize][5],xt[tsize], tempt_tmp[tsize]; | Int_t tempt[tsize][5]; | 
| 183 |  | ULong64_t xt[tsize]; | 
| 184 |  |  | 
| 185 |  | Int_t cntpgtemp=1,cntpgdat=0,cntpgmag=0; | 
| 186 |  | // | 
| 187 |  | // information about the temperatures | 
| 188 |  | for (Int_t ev=0; ev<tnevent; ev++){ | 
| 189 |  | tree->GetEntry(ev); | 
| 190 |  | tmpSize = event->Records->GetEntries(); | 
| 191 |  | for (Int_t j = 0; j < tmpSize; j++){ | 
| 192 |  | record = (pamela::TsbTRecord*)event->Records->At(j); | 
| 193 |  | xt[siztmp]=record->RECORD_OBT; | 
| 194 |  | if((xt[siztmp]<xt[siztmp-1]) && siztmp>0) | 
| 195 |  | cntpgtemp+=1; | 
| 196 |  |  | 
| 197 |  | for (Int_t z = 0; z < 5; z++){ | 
| 198 |  | tempt[siztmp][z] = record->TEMPERATURES[z+1]; | 
| 199 |  | } | 
| 200 |  | siztmp++; | 
| 201 |  | } | 
| 202 |  | } | 
| 203 |  |  | 
| 204 |  | // | 
| 205 |  | // information about the entries for the magnetic field | 
| 206 |  | if(bnevent>0) cntpgmag=1; | 
| 207 |  | maxsize=0; | 
| 208 |  | for (Int_t ev=0; ev<bnevent; ev++){ | 
| 209 |  | Btree->GetEntry(ev); | 
| 210 |  | tmpSize = Bevent->Records->GetEntries(); | 
| 211 |  | maxsize+=tmpSize; | 
| 212 |  | } | 
| 213 |  | const Int_t bsize=maxsize; | 
| 214 |  | Int_t magt[bsize][5]; | 
| 215 |  | ULong64_t xb[bsize]; | 
| 216 |  | siztmp=0; | 
| 217 |  | // | 
| 218 |  | // information about the magnetic field | 
| 219 |  | for (Int_t ev=0; ev<bnevent; ev++){ | 
| 220 |  | Btree->GetEntry(ev); | 
| 221 |  | tmpSize = Bevent->Records->GetEntries(); | 
| 222 |  | for (Int_t j = 0; j < tmpSize; j++){ | 
| 223 |  | Brecord = (pamela::TsbBRecord*)Bevent->Records->At(j); | 
| 224 |  | xb[siztmp]=Brecord->RECORD_OBT; | 
| 225 |  | if((xb[siztmp]<xb[siztmp-1]) && siztmp>0) | 
| 226 |  | cntpgmag+=1; | 
| 227 |  | for (Int_t z = 0; z < 5; z++){ | 
| 228 |  | magt[siztmp][z] = Brecord->B_FIELD[z+1]; | 
| 229 |  | } | 
| 230 |  | siztmp++; | 
| 231 |  | } | 
| 232 |  | } | 
| 233 |  |  | 
| 234 | // | // | 
| 235 | // open the output text files for the alarms | // open the output text files for the alarms | 
| 236 | ofstream warning(out + "warning.txt",ios::out); | TString fname1 = out+ffile; | 
| 237 | TString fname = out+ffile; | TString fname = out+ffile; | 
|  | TString fname1 = out+ffile; |  | 
| 238 | int slen=fname.Length(); | int slen=fname.Length(); | 
| 239 | int last=fname.Last('_'); | int last=fname.Last('_'); | 
| 240 | if(last<(slen-1))fname.Append('_'); | if(last<(slen-1))fname.Append('_'); | 
| 241 | fname.Append("Trk-ALARM-report.txt"); | fname.Append("FTrk-DSP-report.txt"); | 
| 242 | ofstream alarm(fname,ios::out); | ofstream alarm(fname,ios::out); | 
| 243 | alarm << "TRACKER ALARM REPORT - Downlink " << ffile<< endl; | alarm << "TRACKER DSP REPORT - Downlink " << ffile<< endl; | 
| 244 | fname1.Append("_TrkAlarm-pkt-report.txt"); | fname1.Append("_FTrkAlarm-pkt-report.txt"); | 
| 245 | ofstream alarm1(fname1,ios::out); | ofstream alarm1(fname1,ios::out); | 
| 246 | alarm1 << "TrkAlarm pkt REPORT - Downlink " << ffile<< endl; | alarm1 << "TrkAlarm pkt REPORT - Downlink " << ffile<< endl; | 
| 247 |  |  | 
| 249 | // write the file for the TrkAlarm packet | // write the file for the TrkAlarm packet | 
| 250 | if(alnevent==0) alarm1 <<endl<< "------>  NO ALARM!!! <-------"<< endl; | if(alnevent==0) alarm1 <<endl<< "------>  NO ALARM!!! <-------"<< endl; | 
| 251 | else{ | else{ | 
| 252 |  | Long64_t obt=0; | 
| 253 | for (Int_t ev=0; ev<alnevent; ev++){ | for (Int_t ev=0; ev<alnevent; ev++){ | 
| 254 | altr->GetEntry(ev); | altr->GetEntry(ev); | 
| 255 | ph = aleh->GetPscuHeader(); | ph = aleh->GetPscuHeader(); | 
| 256 |  |  | 
| 257 |  | if(ph->GetOrbitalTime()<obt && ev>0) | 
| 258 |  | alarm1<<endl<<"NEW CPU BOOT"<<endl; | 
| 259 |  | obt=ph->GetOrbitalTime(); | 
| 260 |  |  | 
| 261 | alarm1 << "================================================="<< endl; | alarm1 << "================================================="<< endl; | 
| 262 | alarm1 << "PSCU-Pkt N. "<< ph->GetCounter() ; | alarm1 << "PSCU-Pkt N. "<< ph->GetCounter() ; | 
| 263 | alarm1 << " - OBT "<< ph->GetOrbitalTime() << " ms"<<endl; | alarm1 << " - OBT "<< ph->GetOrbitalTime() << " ms"<<endl; | 
| 264 | alarm1 << "(ROOT-tree entry "<<ev<<")"<<endl; | alarm1 << "(ROOT-tree entry "<<ev<<")"<<endl; | 
| 265 | alarm1 << "================================================="<< endl; | alarm1 << "================================================="<< endl<<endl; | 
| 266 |  |  | 
| 267 | alarm1 << " ALARM[1]= "<<(Int_t)al->ALARM[1]<<endl; | alarm1 << "Alarm variables (range 0-1)"<<endl; | 
| 268 | alarm1 << " ALARM[2]= "<<(Int_t)al->ALARM[2]<<endl; | alarm1 << " ALARM[1]= 0x"<< hex << (Int_t)al->ALARM[0]<<endl; | 
| 269 | alarm1 << " Aswr= "<<(Int_t)al->Aswr<<endl; | alarm1 << " ALARM[2]= 0x"<< (Int_t)al->ALARM[1]<<endl; | 
| 270 | alarm1 << " BID[1]= "<<(Int_t)al->BID[0]<<endl; | alarm1 << " CmdDuringTrig= 0x"<< (Int_t)al->CmdDuringTrig<<endl; | 
| 271 | alarm1 << " BID[2]= "<<(Int_t)al->BID[1]<<endl; | alarm1 << " FinalCheck= 0x"<< (Int_t)al->FinalCheck<<endl; | 
| 272 | alarm1 << " BID[3]= "<<(Int_t)al->BID[2]<<endl; | alarm1 << " FlashData= 0x"<< (Int_t)al->FlashData<<endl; | 
| 273 | alarm1 << " BID[4]= "<<(Int_t)al->BID[3]<<endl; | alarm1 << " FlashShutdown= 0x"<< (Int_t)al->FlashShutdown<<endl; | 
| 274 | alarm1 << " BID[5]= "<<(Int_t)al->BID[4]<<endl; | alarm1 << " FlashUpset= 0x"<< (Int_t)al->FlashUpset<<endl; | 
| 275 | alarm1 << " BID[6]= "<<(Int_t)al->BID[5]<<endl; | alarm1 << " InterCheck= 0x"<< (Int_t)al->InterCheck<<endl; | 
| 276 | alarm1 << " BID[7]= "<<(Int_t)al->BID[6]<<endl; | alarm1 << " UnknownCmd= 0x"<<(Int_t)al->UnknownCmd<<endl<<endl; | 
| 277 | alarm1 << " CmdDuringTrig= "<<(Int_t)al->CmdDuringTrig<<endl; |  | 
| 278 | alarm1 << " CmdIDMA= "<<(Int_t)al->CmdIDMA<<endl; | alarm1 << "Alarm variables (range 0-3F)"<<endl; | 
| 279 | alarm1 << " CmdNum= "<<(Int_t)al->CmdNum<<endl; | alarm1 << " CmdIDMA= 0x"<< (Int_t)al->CmdIDMA<<endl; | 
| 280 | alarm1 << " DSPBusy= "<<(Int_t)al->DSPBusy<<endl; | alarm1 << " DSPSoft= 0x"<< (Int_t)al->DSPSoft<<endl; | 
| 281 | alarm1 << " DSPMask= "<<(Int_t)al->DSPMask<<endl; | alarm1 << " TrigIDMA= 0x"<< (Int_t)al->TrigIDMA<<endl<<endl; | 
| 282 | alarm1 << " DSPSoft= "<<(Int_t)al->DSPSoft<<endl; |  | 
| 283 | alarm1 << " FinalCheck= "<<(Int_t)al->FinalCheck<<endl; | alarm1 << "Control variables (range 0-3F)"<<endl; | 
| 284 | alarm1 << " FlashData= "<<(Int_t)al->FlashData<<endl; | alarm1 << " DSPBusy= 0x"<< (Int_t)al->DSPBusy<<endl; | 
| 285 | alarm1 << " FlashOn= "<<(Int_t)al->FlashOn<<endl; | alarm1 << " DSPMask= 0x"<< (Int_t)al->DSPMask<<endl<<endl; | 
| 286 | alarm1 << " FlashShutdown= "<<(Int_t)al->FlashShutdown<<endl; |  | 
| 287 | alarm1 << " FlashUpset= "<<(Int_t)al->FlashUpset<<endl; | alarm1 << "Control variables (range 0-1)"<<endl; | 
| 288 | alarm1 << " InterCheck= "<<(Int_t)al->InterCheck<<endl; | alarm1 << " FlashOn= 0x"<< (Int_t)al->FlashOn<<endl<<endl; | 
| 289 | alarm1 << " PNum= "<<(Int_t)al->PNum<<endl; |  | 
| 290 | alarm1 << " TrigIDMA= "<<(Int_t)al->TrigIDMA<<endl; | alarm1 << "Control variables (range 0-3)"<<endl; | 
| 291 | alarm1 << " TrigMask= "<<(Int_t)al->TrigMask<<endl; | alarm1 << " TrigMask= 0x"<< (Int_t)al->TrigMask<<endl<<endl; | 
| 292 | alarm1 << " UnknownCmd= "<<(Int_t)al->UnknownCmd<<endl; |  | 
| 293 |  | alarm1 << "Control bits fixed"<<endl; | 
| 294 |  | alarm1 << " Aswr= 0x"<< (Int_t)al->Aswr<<endl; | 
| 295 |  | alarm1 << " BID[1]= 0x"<< (Int_t)al->BID[0]<<endl; | 
| 296 |  | alarm1 << " BID[2]= 0x"<< (Int_t)al->BID[1]<<endl; | 
| 297 |  | alarm1 << " BID[3]= 0x"<< (Int_t)al->BID[2]<<endl; | 
| 298 |  | alarm1 << " BID[4]= 0x"<< (Int_t)al->BID[3]<<endl; | 
| 299 |  | alarm1 << " BID[5]= 0x"<< (Int_t)al->BID[4]<<endl; | 
| 300 |  | alarm1 << " BID[6]= 0x"<< (Int_t)al->BID[5]<<endl; | 
| 301 |  | alarm1 << " BID[7]= 0x"<< (Int_t)al->BID[6]<<endl; | 
| 302 |  | alarm1 << " CmdNum= 0x"<< (Int_t)al->CmdNum<<endl; | 
| 303 |  | alarm1 << " PNum= 0x"<< (Int_t)al->PNum<< dec <<endl; | 
| 304 |  |  | 
| 305 |  | alarm1 << "================================================="<< endl<<endl; | 
| 306 |  |  | 
| 307 | } | } | 
| 308 | } | } | 
| 309 |  |  | 
| 310 |  | // | 
| 311 |  | // Set Style options | 
| 312 |  | gStyle->SetLabelSize(0.05,"x"); | 
| 313 |  | gStyle->SetLabelSize(0.06,"y"); | 
| 314 |  | gStyle->SetStatFontSize(0.075); | 
| 315 |  | gStyle->SetOptStat(1110); | 
| 316 |  | gStyle->SetFillColor(10); | 
| 317 |  | gStyle->SetStatColor(10); | 
| 318 |  | gStyle->SetTitleFillColor(10); | 
| 319 |  | gStyle->SetTitleFontSize(0.1); | 
| 320 |  | gStyle->SetTitleOffset(0.8,"y"); | 
| 321 |  | gStyle->SetTitleOffset(0.9,"x"); | 
| 322 |  | gStyle->SetTitleSize(0.06,"y"); | 
| 323 |  | gStyle->SetTitleSize(0.055,"x"); | 
| 324 |  |  | 
| 325 |  | // | 
| 326 |  | // Define output canvas, histos and graphs | 
| 327 |  | TCanvas *CompTimeCanv[countnboot],*EventNumCanv[countnboot],*TempCanv[cntpgtemp],*BfieldCanv[cntpgmag]; | 
| 328 |  | TCanvas *IlluminaCanv,*LandauCanv1,*LandauCanv2,*LandauCanv3; | 
| 329 |  |  | 
| 330 |  | TH1F *landau1[12],*landau2[12],*landau3[12],*illuminazione[12]; | 
| 331 |  | TGraph *comprtime[12][countnboot],*temp[5][cntpgtemp],*tempw[5][cntpgtemp],*eventnumb[countnboot],*mag[5][cntpgmag]; | 
| 332 |  | TPad *pad1[12],*pad2[12],*pad3[12],*pad4[12],*pad5[12],*pad6[5],*pad7[5]; | 
| 333 |  |  | 
| 334 |  | for(Int_t n = 0; n<12; n++) { | 
| 335 |  |  | 
| 336 |  | /* -----------> HISTOGRAMS          */ | 
| 337 |  |  | 
| 338 |  | tit<<"DSP "<<n+1; | 
| 339 |  | oss1<<"DSP  "<<n+1; | 
| 340 |  | oss2<<"DSPh  "<<n+1; | 
| 341 |  | oss3<<"DSP h "<<n+1; | 
| 342 |  | oss4<<"DSP   h"<<n+1; | 
| 343 |  |  | 
| 344 |  | landau1[n]= new TH1F(oss1.str().c_str(),tit.str().c_str(),401,-0.5,1200.5); | 
| 345 |  | landau2[n]= new TH1F(oss2.str().c_str(),tit.str().c_str(),401,-0.5,1200.5); | 
| 346 |  | landau3[n]= new TH1F(oss3.str().c_str(),tit.str().c_str(),401,-0.5,1200.5); | 
| 347 |  |  | 
| 348 |  | illuminazione[n]= new TH1F(oss4.str().c_str(),tit.str().c_str(),3073,-0.5,3072.5); | 
| 349 |  |  | 
| 350 |  | tit.str(""); | 
| 351 |  | oss1.str(""); | 
| 352 |  | oss2.str(""); | 
| 353 |  | oss3.str(""); | 
| 354 |  | oss4.str(""); | 
| 355 |  | }; | 
| 356 |  |  | 
| 357 |  |  | 
| 358 | //*************************************************************************************** | //*************************************************************************************** | 
| 359 | // LOOP on each event | // LOOP on each event | 
| 360 | //*************************************************************************************** | //*************************************************************************************** | 
| 361 |  |  | 
| 362 | // | if (fromevent!=0) | 
| 363 | // information about the temperatures | printf("\n Scan of events from %i to %i ... \n",minevent,maxevent-1); | 
| 364 | for (Int_t ev=0; ev<tnevent; ev++){ | else | 
| 365 | tree->GetEntry(ev); | printf("\n Scan of events from %i to %i ... \n",minevent+1,maxevent); | 
| 366 | tmpSize = event->Records->GetEntries(); |  | 
| 367 | for (Int_t j = 0; j < tmpSize; j++){ | TLatex *t=new TLatex(); | 
| 368 | record = (pamela::TsbTRecord*)event->Records->At(j); | TLatex *t1=new TLatex(); | 
| 369 | xt[siztmp]=record->RECORD_OBT;  //0.051*record->RECORD_OBT; |  | 
| 370 | for (Int_t z = 0; z < 5; z++){ | TLine li,liva1; | 
| 371 | tempt[siztmp][z] = record->TEMPERATURES[z+1]; |  | 
| 372 | } | Int_t minev=minevent,maxev=maxevent,countTEMP=0,countMAG=0; | 
| 373 | siztmp++; | ULong_t countALARMx=0,countALARMy=0,countFC[12],countFL1[12],countFL2[12],countFL3[12],countFL4[12],countFL5[12],countFL6[12]; | 
| 374 | } |  | 
| 375 |  | for(int i=0; i<12; i++){ | 
| 376 |  | countFC[i]=0; | 
| 377 |  | countFL1[i]=0; | 
| 378 |  | countFL2[i]=0; | 
| 379 |  | countFL3[i]=0; | 
| 380 |  | countFL4[i]=0; | 
| 381 |  | countFL5[i]=0; | 
| 382 |  | countFL6[i]=0; | 
| 383 | } | } | 
| 384 |  |  | 
| 385 | // | // | 
| 386 | // information about the tracker data | // Fill temperature graphs | 
| 387 | for (Int_t ev=minevent; ev<maxevent; ev++){ | for(Int_t ii=0; ii<cntpgtemp;ii++){ | 
| 388 | tr->GetEntry(ev); | //**************************************************************************************** | 
| 389 | ph = eh->GetPscuHeader(); | //Temperature Output Pages | 
| 390 | dsp=0; | //**************************************************************************************** | 
| 391 | ALARM=0; | fromfile.str(""); | 
| 392 | for(Int_t i=0; i<12; i++){ | fromfile<<"FTrkQLook_EXPERT      File: "<<ffile; | 
| 393 | dsp=te->DSPnumber[i]-1; | isfile<<"Temperatures vs OBT   pag"<<ii+1; | 
| 394 | yd[(ev-minevent)*12+dsp]= te->DATAlength[i]; | TempCanv[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200); | 
| 395 | yc[(ev-minevent)*12+dsp]= 0.051*te->compressiontime[i]; | TempCanv[ii]->SetFillColor(10); | 
| 396 | for(Int_t j=0;j<3;j++){ | TempCanv[ii]->Range(0,0,100,100); | 
| 397 | illum[(ev-minevent)*12+dsp][j]=te->addrcluster[i][j]; |  | 
| 398 | if(!(dsp%2)&&(te->signcluster[i][j])!=0) | t->SetTextFont(32); | 
| 399 | land[(ev-minevent)*12+dsp][j]=1024-(te->signcluster[i][j]); | t->SetTextColor(1); | 
| 400 | else land[(ev-minevent)*12+dsp][j]=te->signcluster[i][j]; | t->SetTextAlign(12); | 
| 401 |  | t->SetTextSize(0.02); | 
| 402 |  | t->DrawLatex(2.,98.7,fromfile.str().c_str()); | 
| 403 |  | t1->SetTextFont(32); | 
| 404 |  | t1->SetTextColor(1); | 
| 405 |  | t1->SetTextAlign(12); | 
| 406 |  | t1->SetTextSize(0.02); | 
| 407 |  | t1->DrawLatex(78.,98.7,isfile.str().c_str()); | 
| 408 |  | isfile.str(""); | 
| 409 |  | t1->SetTextSize(0.025); | 
| 410 |  | t1->SetTextColor(196); | 
| 411 |  | isfile<<"--> Values at 28.5^{o}C (if presents) correspond"; | 
| 412 |  | t1->DrawLatex(50.,22.,isfile.str().c_str()); | 
| 413 |  | isfile.str(""); | 
| 414 |  | isfile<<"    to wrong readings ( > 100^{o}C) of the Tsb"; | 
| 415 |  | t1->DrawLatex(50.,19.,isfile.str().c_str()); | 
| 416 |  | isfile.str(""); | 
| 417 |  | isfile<<"--> Values at 25.5^{o}C (if presents) correspond"; | 
| 418 |  | t1->DrawLatex(50.,12.,isfile.str().c_str()); | 
| 419 |  | isfile.str(""); | 
| 420 |  | isfile<<"    to wrong readings ( < 0^{o}C) of the Tsb"; | 
| 421 |  | t1->DrawLatex(50.,9.,isfile.str().c_str()); | 
| 422 |  | isfile.str(""); | 
| 423 |  |  | 
| 424 |  | Float_t tposy = 0.95;    // up y-coord - top pads | 
| 425 |  | Float_t thpad = 0;   // pad height | 
| 426 |  | Float_t tposx1=0;          // left  x-coord - pad column | 
| 427 |  | Float_t tposx0=0;          //       x-coord - column division | 
| 428 |  | Float_t twrel = 0;     // relative x size of first sub-column | 
| 429 |  | Float_t tmarg = 0.004;   // margin among pads | 
| 430 |  |  | 
| 431 |  | thpad = (tposy-tmarg*5)/3; | 
| 432 |  | twrel = (1-tmarg*4)/2; | 
| 433 |  |  | 
| 434 |  | for(Int_t i=0; i<5; i++){ | 
| 435 |  | if ( (i+1)%2==1 ) { | 
| 436 |  | if(i>1) tposy = tposy-(tmarg*2+thpad); | 
| 437 |  | tposx1 = tmarg; | 
| 438 |  | tposx0 = tposx1 + twrel; | 
| 439 | } | } | 
| 440 | x[(ev-minevent)]= ph->GetOrbitalTime(); | else { | 
| 441 |  | tposx1 = tposx0 + 2*tmarg; | 
| 442 |  | tposx0 = tposx1 + twrel; | 
| 443 |  | } | 
| 444 |  |  | 
| 445 |  | /* -----------> pad for histograms  */ | 
| 446 |  | pad6[i] = new TPad("pad6"," ",tposx1,tposy-thpad,tposx0,tposy,18,0,0); | 
| 447 |  |  | 
| 448 |  | Int_t v=0,vv=0; | 
| 449 |  | Double_t xt_tmp[tsize], tempt_tmp[tsize]; | 
| 450 |  | Double_t xt_tmpw[tsize], tempt_tmpw[tsize]; | 
| 451 |  | for (Int_t ev=countTEMP; ev<tsize; ev++){ | 
| 452 |  |  | 
| 453 | WARNING[i]=0; | if(ev==tsize-1 && i==4 && ii==cntpgtemp-1) countTEMP=tsize-1; | 
| 454 | if(te->fc[i]!=0 || te->fl1[i]!=0 || te->fl2[i]!=0 || te->fl3[i]!=0 || te->fl4[i]!=0 || te->fl5[i]!=0 || te->fl6[i]!=0){ | if(xt[ev]<xt[ev-1] && ev>countTEMP){ | 
| 455 | ALARM = 1;      //general alarm | if(i==4) countTEMP=ev; | 
| 456 | WARNING[i] = 1; // DSP warning | break; | 
| 457 | }; | } | 
| 458 |  | else{ | 
| 459 | if(te->alarm[i]!=0){ // hardware alarm | tempt_tmp[v]=(Double_t)((Int_t)(((3.3*tempt[ev][i]/4096)-0.586)/0.0231)); | 
| 460 | ALARM = 1; | if(tempt_tmp[v]>100) { | 
| 461 | }; | tempt_tmp[v]=28.5; | 
| 462 |  | tempt_tmpw[vv]=28.5; | 
| 463 | //************************************************************************************** | xt_tmpw[vv++]=(Double_t)xt[ev]; | 
| 464 | // warning for internal number | } | 
| 465 | //************************************************************************************** | else if(tempt_tmp[v]<0){ | 
| 466 | if(i<=10){ | tempt_tmp[v]=25.5; | 
| 467 | if(te->eventn[i]!=te->eventn[i+1]){ | tempt_tmpw[vv]=25.5; | 
| 468 | warning_dspnumber++; | xt_tmpw[vv++]=(Double_t)xt[ev]; | 
| 469 | warning<< "==> WARNING!!    Check entry "<< ev<<" (DSP "<<dsp<<")" <<endl<< | } | 
| 470 | "eventn["<<i<<"]= "<<te->eventn[i]<<"!= eventn["<<i+1<<"]= "<< te->eventn[i+1]<<endl; | xt_tmp[v++]=(Double_t)xt[ev]; | 
| 471 | } | } | 
|  | else |  | 
|  | eventint[(ev-minevent)]=te->eventn[0]; |  | 
| 472 | } | } | 
| 473 | } | TempCanv[ii]->cd(); | 
| 474 |  | tit<<"T"<<i+5<<" (magnetic module "<<i+1<<")"; | 
| 475 | if(ev<=maxevent-1){ | pad6[i]->SetFillColor(10); | 
| 476 |  | pad6[i]->Draw(); | 
| 477 |  | pad6[i]->cd(); | 
| 478 |  | temp[i][ii]= new TGraph(v,xt_tmp,tempt_tmp); | 
| 479 |  | temp[i][ii]->SetTitle(tit.str().c_str()); | 
| 480 |  | if(v==1) temp[i][ii]->GetXaxis()->SetNdivisions(-501); | 
| 481 |  | temp[i][ii]->GetXaxis()->SetLabelSize(0.04); | 
| 482 |  | temp[i][ii]->GetXaxis()->SetTitleSize(0.04); | 
| 483 |  | temp[i][ii]->GetXaxis()->SetTitle("OBT (ms)"); | 
| 484 |  | temp[i][ii]->GetXaxis()->CenterTitle(); | 
| 485 |  | temp[i][ii]->GetXaxis()->SetTitleOffset(0.85); | 
| 486 |  | temp[i][ii]->GetYaxis()->SetTitleOffset(1.2); | 
| 487 |  | temp[i][ii]->GetYaxis()->SetLabelOffset(0.001); | 
| 488 |  | temp[i][ii]->GetYaxis()->SetLabelSize(0.04); | 
| 489 |  | temp[i][ii]->GetYaxis()->SetTitleSize(0.04); | 
| 490 |  | temp[i][ii]->GetYaxis()->SetTitle("Temperatures ( ^{o}C)"); | 
| 491 |  | temp[i][ii]->GetYaxis()->CenterTitle(); | 
| 492 |  | temp[i][ii]->SetMarkerStyle(21); | 
| 493 |  | temp[i][ii]->SetMarkerSize(0.2); | 
| 494 |  | temp[i][ii]->Draw("ap"); | 
| 495 |  | tit.str(""); | 
| 496 |  | if(vv>0){ | 
| 497 |  | tempw[i][ii]= new TGraph(vv,xt_tmpw,tempt_tmpw); | 
| 498 |  | tempw[i][ii]->SetMarkerStyle(21); | 
| 499 |  | tempw[i][ii]->SetMarkerSize(0.2); | 
| 500 |  | tempw[i][ii]->SetMarkerColor(196); | 
| 501 |  | tempw[i][ii]->Draw("samep"); | 
| 502 |  | } | 
| 503 |  | TempCanv[ii]->Update(); | 
| 504 |  |  | 
| 505 |  |  | 
| 506 |  | } | 
| 507 |  | if(countTEMP==tsize-1 && ii==cntpgtemp-1){ | 
| 508 |  | break; | 
| 509 |  | } | 
| 510 |  | } | 
| 511 |  |  | 
| 512 | if((ev-minevent)>=1 && eventint[(ev-minevent)]!=eventint[(ev-minevent)-1]+1 && eventint[(ev-minevent)]!=1){ | // | 
| 513 | warning_dspnumber++; | // Fill magnetic field graphs | 
| 514 | warning<< "==> WARNING!!    Check entry "<< ev<<endl<< | for(Int_t ii=0; ii<cntpgmag;ii++){ | 
| 515 | " DSP event num.= "<< eventint[(ev-minevent)]<< | //**************************************************************************************** | 
| 516 | " is different from (previus+1) ="<<eventint[(ev-minevent)-1]+1 <<"\n"<<endl; | //Magnetic Field Output Pages | 
| 517 |  | //**************************************************************************************** | 
| 518 |  | fromfile.str(""); | 
| 519 |  | fromfile<<"FTrkQLook_EXPERT      File: "<<ffile; | 
| 520 |  | isfile<<"Magnetic Axial Field vs OBT   pag"<<ii+1; | 
| 521 |  | BfieldCanv[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200); | 
| 522 |  | BfieldCanv[ii]->SetFillColor(10); | 
| 523 |  | BfieldCanv[ii]->Range(0,0,100,100); | 
| 524 |  |  | 
| 525 |  | t->SetTextFont(32); | 
| 526 |  | t->SetTextColor(1); | 
| 527 |  | t->SetTextAlign(12); | 
| 528 |  | t->SetTextSize(0.02); | 
| 529 |  | t->DrawLatex(2.,98.7,fromfile.str().c_str()); | 
| 530 |  | t1->SetTextFont(32); | 
| 531 |  | t1->SetTextColor(1); | 
| 532 |  | t1->SetTextAlign(12); | 
| 533 |  | t1->SetTextSize(0.02); | 
| 534 |  | t1->DrawLatex(70.,98.7,isfile.str().c_str()); | 
| 535 |  | isfile.str(""); | 
| 536 |  |  | 
| 537 |  | li.SetLineStyle(1); | 
| 538 |  | li.SetLineWidth(1); | 
| 539 |  | li.SetLineColor(190); | 
| 540 |  | t1->SetTextColor(190); | 
| 541 |  | t1->SetTextSize(0.04); | 
| 542 |  |  | 
| 543 |  | Float_t tposy = 0.95;    // up y-coord - top pads | 
| 544 |  | Float_t thpad = 0;   // pad height | 
| 545 |  | Float_t tposx1=0;          // left  x-coord - pad column | 
| 546 |  | Float_t tposx0=0;          //       x-coord - column division | 
| 547 |  | Float_t twrel = 0;     // relative x size of first sub-column | 
| 548 |  | Float_t tmarg = 0.004;   // margin among pads | 
| 549 |  |  | 
| 550 |  | thpad = (tposy-tmarg*5)/3; | 
| 551 |  | twrel = (1-tmarg*4)/2; | 
| 552 |  |  | 
| 553 |  | for(Int_t i=0; i<5; i++){ | 
| 554 |  | if ( (i+1)%2==1 ) { | 
| 555 |  | if(i>1) tposy = tposy-(tmarg*2+thpad); | 
| 556 |  | tposx1 = tmarg; | 
| 557 |  | tposx0 = tposx1 + twrel; | 
| 558 |  | } | 
| 559 |  | else { | 
| 560 |  | tposx1 = tposx0 + 2*tmarg; | 
| 561 |  | tposx0 = tposx1 + twrel; | 
| 562 | } | } | 
|  | }; |  | 
| 563 |  |  | 
| 564 | //******************************************************************************************** | /* -----------> pad for histograms  */ | 
| 565 | // file ALARM | pad7[i] = new TPad("pad7"," ",tposx1,tposy-thpad,tposx0,tposy,18,0,0); | 
|  | //******************************************************************************************** |  | 
|  | if(ALARM==1) { |  | 
|  |  |  | 
|  | alarm << "================================================="<< endl; |  | 
|  | alarm << "PSCU-Pkt N. "<< ph->GetCounter() ; |  | 
|  | alarm << " - OBT "<< ph->GetOrbitalTime() << " ms"<<endl; |  | 
|  | alarm << "(ROOT-tree entry "<<ev<<")"<<endl; |  | 
|  | alarm << "================================================="<< endl; |  | 
| 566 |  |  | 
| 567 | alarm << " DSPn"; | Int_t v=0; | 
| 568 | alarm << " Event"; | Double_t xb_tmp[bsize], magt_tmp[bsize]; | 
| 569 | alarm << " Words"; | for (Int_t ev=countMAG; ev<bsize; ev++){ | 
| 570 | alarm << " crc"; |  | 
| 571 | alarm << "  FC"; | if(ev==bsize-1 && i==4 && ii==cntpgmag-1) countMAG=bsize-1; | 
| 572 | alarm << " FL1"; | if(xb[ev]<xb[ev-1] && ev>countMAG){ | 
| 573 | alarm << " FL2"; | if(i==4) countMAG=ev; | 
| 574 | alarm << " FL3"; | break; | 
| 575 | alarm << " FL4"; | } | 
| 576 | alarm << " FL5"; | else{ | 
| 577 | alarm << " FL6" << endl; | magt_tmp[v]=(Double_t)magt[ev][i]; | 
| 578 |  | xb_tmp[v++]=(Double_t)xb[ev]; | 
| 579 |  | } | 
| 580 |  | } | 
| 581 |  | BfieldCanv[ii]->cd(); | 
| 582 |  | tit<<"B"<<i+5<<" (magnetic module "<<i+1<<")"; | 
| 583 |  | pad7[i]->SetFillColor(10); | 
| 584 |  | pad7[i]->Draw(); | 
| 585 |  | pad7[i]->cd(); | 
| 586 |  | mag[i][ii]= new TGraph(v,xb_tmp,magt_tmp); | 
| 587 |  | mag[i][ii]->SetTitle(tit.str().c_str()); | 
| 588 |  | if(v==1) mag[i][ii]->GetXaxis()->SetNdivisions(-501); | 
| 589 |  | mag[i][ii]->GetXaxis()->SetLabelSize(0.04); | 
| 590 |  | mag[i][ii]->GetXaxis()->SetTitleSize(0.04); | 
| 591 |  | mag[i][ii]->GetXaxis()->SetTitle("OBT (ms)"); | 
| 592 |  | mag[i][ii]->GetXaxis()->CenterTitle(); | 
| 593 |  | mag[i][ii]->GetXaxis()->SetTitleOffset(0.85); | 
| 594 |  | if(i!=4) mag[i][ii]->GetYaxis()->SetRangeUser(2047,2058); | 
| 595 |  | else mag[i][ii]->GetYaxis()->SetRangeUser(2059,2067); | 
| 596 |  | mag[i][ii]->GetYaxis()->SetTitleOffset(1.2); | 
| 597 |  | mag[i][ii]->GetYaxis()->SetLabelOffset(0.001); | 
| 598 |  | mag[i][ii]->GetYaxis()->SetLabelSize(0.03); | 
| 599 |  | mag[i][ii]->GetYaxis()->SetTitleSize(0.04); | 
| 600 |  | mag[i][ii]->GetYaxis()->SetTitle("Magnetic Field (au)"); | 
| 601 |  | mag[i][ii]->GetYaxis()->CenterTitle(); | 
| 602 |  | mag[i][ii]->SetMarkerStyle(21); | 
| 603 |  | mag[i][ii]->SetMarkerSize(0.4); | 
| 604 |  | mag[i][ii]->Draw("ap"); | 
| 605 |  | Double_t min=0.,max=0,xlat=0.; | 
| 606 |  | min=mag[i][ii]->GetXaxis()->GetXmin(); | 
| 607 |  | max=mag[i][ii]->GetXaxis()->GetXmax(); | 
| 608 |  | xlat=min+(max-min)/2; | 
| 609 |  | stringstream mi,ma; | 
| 610 |  | mi<<"minimum recorded value"; | 
| 611 |  | ma<<"maximum recorded value"; | 
| 612 |  | t->SetTextSize(0.1); | 
| 613 |  | switch(i){ | 
| 614 |  | case 0: | 
| 615 |  | li.DrawLine(min,2054.,max,2054.); | 
| 616 |  | li.DrawLine(min,2048.,max,2048.); | 
| 617 |  | t1->DrawLatex(xlat,2054.3,ma.str().c_str()); | 
| 618 |  | t1->DrawLatex(xlat,2047.7,mi.str().c_str()); | 
| 619 |  | break; | 
| 620 |  |  | 
| 621 |  | case 1: | 
| 622 |  | li.DrawLine(min,2055.,max,2055.); | 
| 623 |  | li.DrawLine(min,2050.,max,2050.); | 
| 624 |  | t1->DrawLatex(xlat,2055.3,ma.str().c_str()); | 
| 625 |  | t1->DrawLatex(xlat,2049.7,mi.str().c_str()); | 
| 626 |  | break; | 
| 627 |  |  | 
| 628 |  | case 2: | 
| 629 |  | li.DrawLine(min,2056.,max,2056.); | 
| 630 |  | li.DrawLine(min,2051.,max,2051.); | 
| 631 |  | t1->DrawLatex(xlat,2056.3,ma.str().c_str()); | 
| 632 |  | t1->DrawLatex(xlat,2050.7,mi.str().c_str()); | 
| 633 |  | break; | 
| 634 |  |  | 
| 635 | for(Int_t i=0; i<12 ; i++){ | case 3: | 
| 636 | alarm.width(5); alarm << te->DSPnumber[i]; | li.DrawLine(min,2057.,max,2057.); | 
| 637 | alarm.width(6); alarm << te->eventn[i]; | li.DrawLine(min,2052.,max,2052.); | 
| 638 | alarm.width(6); alarm << te->DATAlength[i]; | t1->DrawLatex(xlat,2057.3,ma.str().c_str()); | 
| 639 | alarm.width(4); alarm << te->crc[i]; | t1->DrawLatex(xlat,2051.7,mi.str().c_str()); | 
| 640 | alarm.width(4); alarm << te->fc[i]; | break; | 
| 641 | alarm.width(4); alarm << te->fl1[i]; |  | 
| 642 | alarm.width(4); alarm << te->fl2[i]; | case 4: | 
| 643 | alarm.width(4); alarm << te->fl3[i]; | li.DrawLine(min,2066.,max,2066.); | 
| 644 | alarm.width(4); alarm << te->fl4[i]; | li.DrawLine(min,2060.,max,2060.); | 
| 645 | alarm.width(4); alarm << te->fl5[i]; | t1->DrawLatex(xlat,2066.15,ma.str().c_str()); | 
| 646 | alarm.width(4); alarm << te->fl6[i]; | t1->DrawLatex(xlat,2059.85,mi.str().c_str()); | 
| 647 | if(te->alarm[i]!=0)alarm<<" >> ALARM "; | break; | 
| 648 | if(WARNING[i]!=0)alarm<<" (DSP warning) "; |  | 
|  | alarm    << endl; |  | 
| 649 | } | } | 
| 650 |  | BfieldCanv[ii]->Update(); | 
| 651 |  | tit.str(""); | 
| 652 |  | } | 
| 653 |  | if(countMAG==bsize-1 && ii==cntpgmag-1){ | 
| 654 |  | break; | 
| 655 | } | } | 
| 656 | } | } | 
| 657 | if(ALARM==0) alarm << endl<< "------>  NO ALARM!!! <-------"<<endl; |  | 
|  |  |  | 
|  | if(warning_dspnumber==0) warning<<"NONE"<<endl; |  | 
|  |  |  | 
|  | //***************************************** |  | 
|  | //close all files |  | 
|  | //***************************************** |  | 
|  | warning.close(); |  | 
|  | alarm.close(); |  | 
|  | datafile->Close(); |  | 
| 658 |  |  | 
| 659 |  | // | 
| 660 |  | // Fill compressiontime and eventnumber graphs and DSP warnings | 
| 661 |  | for(Int_t ii=0; ii<countnboot;ii++){ | 
| 662 |  | TPad *pt;         //pad for histos | 
| 663 |  |  | 
| 664 |  | //**************************************************************************************** | 
| 665 |  | //COMPRESSIONTIME vs. OBT Output Pages | 
| 666 |  | //**************************************************************************************** | 
| 667 |  | fromfile.str(""); | 
| 668 |  | fromfile<<"FTrkQLook_EXPERT      File: "<<ffile; | 
| 669 |  | isfile<<"COMPRESSIONTIME vs. OBT   pag"<<ii+1; | 
| 670 |  | CompTimeCanv[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200); | 
| 671 |  | CompTimeCanv[ii]->SetFillColor(10); | 
| 672 |  | CompTimeCanv[ii]->Range(0,0,100,100); | 
| 673 |  | t->SetTextFont(32); | 
| 674 |  | t->SetTextColor(1); | 
| 675 |  | t->SetTextAlign(12); | 
| 676 |  | t->SetTextSize(0.02); | 
| 677 |  | t->DrawLatex(2.,98.7,fromfile.str().c_str()); | 
| 678 |  | t1->SetTextFont(32); | 
| 679 |  | t1->SetTextColor(1); | 
| 680 |  | t1->SetTextAlign(12); | 
| 681 |  | t1->SetTextSize(0.02); | 
| 682 |  | t1->DrawLatex(62.,98.7,isfile.str().c_str()); | 
| 683 |  | isfile.str(""); | 
| 684 |  |  | 
| 685 |  | //**************************************************************************************** | 
| 686 |  | //DSP EVENT NUMBER Output Pages | 
| 687 |  | //**************************************************************************************** | 
| 688 |  |  | 
| 689 |  | isfile<<"DSP EVENT NUMBER vs. OBT   pag"<<ii+1; | 
| 690 |  | EventNumCanv[ii]=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200); | 
| 691 |  | EventNumCanv[ii]->SetFillColor(10); | 
| 692 |  | EventNumCanv[ii]->Range(0,0,100,100); | 
| 693 |  | t->SetTextFont(32); | 
| 694 |  | t->SetTextColor(1); | 
| 695 |  | t->SetTextAlign(12); | 
| 696 |  | t->SetTextSize(0.02); | 
| 697 |  | t->DrawLatex(2.,98.7,fromfile.str().c_str()); | 
| 698 |  | t1->SetTextFont(32); | 
| 699 |  | t1->SetTextColor(1); | 
| 700 |  | t1->SetTextAlign(12); | 
| 701 |  | t1->SetTextSize(0.02); | 
| 702 |  | t1->DrawLatex(62.,98.7,isfile.str().c_str()); | 
| 703 |  | isfile.str(""); | 
| 704 |  |  | 
| 705 |  | Float_t posy = 0.95;    // up y-coord - top pads | 
| 706 |  | Float_t hpad = 0;   // pad height | 
| 707 |  | Float_t posx1=0;          // left  x-coord - pad column | 
| 708 |  | Float_t posx0=0;          //       x-coord - column division | 
| 709 |  | Float_t wrel = 0;     // relative x size of first sub-column | 
| 710 |  | Float_t marg = 0.004;   // margin among pads | 
| 711 |  |  | 
| 712 |  | hpad = (posy-marg*11)/6; | 
| 713 |  | wrel = (1-marg*4)/2; | 
| 714 |  |  | 
| 715 |  | for(Int_t n = 0; n<12; n++) { | 
| 716 |  |  | 
| 717 |  | if ( (n+1)%2==1 ) { | 
| 718 |  | if(n>1) posy = posy-(marg*2+hpad); | 
| 719 |  | posx1 = marg; | 
| 720 |  | posx0 = posx1 + wrel; | 
| 721 |  | } | 
| 722 |  | else { | 
| 723 |  | posx1 = posx0 + 2*marg; | 
| 724 |  | posx0 = posx1 + wrel; | 
| 725 |  | } | 
| 726 |  |  | 
| 727 |  | /* -----------> pad for histograms  */ | 
| 728 |  | pad1[n] = new TPad("pad1"," ",posx1,posy-hpad,posx0,posy,18,0,0); | 
| 729 |  | pad2[n] = new TPad("pad2"," ",posx1,posy-hpad,posx0,posy,18,0,0); | 
| 730 |  | pad3[n] = new TPad("pad3"," ",posx1,posy-hpad,posx0,posy,18,0,0); | 
| 731 |  | pad4[n] = new TPad("pad4"," ",posx1,posy-hpad,posx0,posy,18,0,0); | 
| 732 |  | pad5[n] = new TPad("pad5"," ",posx1,posy-hpad,posx0,posy,18,0,0); | 
| 733 |  | } | 
| 734 |  |  | 
| 735 |  | // | 
| 736 |  | // Obtain information about the tracker data | 
| 737 |  | // and fill graphs and histos | 
| 738 |  |  | 
| 739 |  | Int_t al=0; | 
| 740 |  | Double_t x[MAXSTORAGE]; | 
| 741 |  | Float_t yc[MAXSTORAGE][12]; | 
| 742 |  | Double_t eventint[MAXSTORAGE]; | 
| 743 |  | Int_t eventn[12]; | 
| 744 |  |  | 
| 745 |  | for (Int_t ev=minev; ev<maxevent; ev++){ | 
| 746 |  | tr->GetEntry(ev); | 
| 747 |  | ph = eh->GetPscuHeader(); | 
| 748 |  | cod = eh->GetCounter(); | 
| 749 |  |  | 
|  | gStyle->SetLabelSize(0.05,"x"); |  | 
|  | gStyle->SetLabelSize(0.06,"y"); |  | 
|  | gStyle->SetStatFontSize(0.075); |  | 
|  | gStyle->SetOptStat(1110); |  | 
|  | gStyle->SetFillColor(10); |  | 
|  | gStyle->SetTitleFillColor(10); |  | 
|  | gStyle->SetTitleFontSize(0.1); |  | 
|  | gStyle->SetTitleOffset(0.8,"y"); |  | 
|  | gStyle->SetTitleOffset(0.9,"x"); |  | 
|  | gStyle->SetTitleSize(0.06,"y"); |  | 
|  | gStyle->SetTitleSize(0.055,"x"); |  | 
| 750 |  |  | 
| 751 | //**************************************************************************************** | if(ev==maxevent-1) maxev=maxevent-1; | 
|  | //Output figures --- First sheet: |  | 
|  | //**************************************************************************************** |  | 
|  |  |  | 
|  | TCanvas *CompTimeCanv=new TCanvas("Tracker_Detector_Report_4/6","",900,1200); |  | 
|  | CompTimeCanv->SetFillColor(10); |  | 
|  | CompTimeCanv->Range(0,0,100,100); |  | 
|  | fromfile<<"FTrkQLook_EXPERT      File: "<<ffile; |  | 
|  | isfile<<"COMPRESSIONTIME vs. OBT"; |  | 
|  | TLatex *t=new TLatex(); |  | 
|  | t->SetTextFont(32); |  | 
|  | t->SetTextColor(1); |  | 
|  | t->SetTextAlign(12); |  | 
|  | t->SetTextSize(0.02); |  | 
|  | t->DrawLatex(2.,98.7,fromfile.str().c_str()); |  | 
|  | TLatex *t1=new TLatex(); |  | 
|  | t1->SetTextFont(32); |  | 
|  | t1->SetTextColor(1); |  | 
|  | t1->SetTextAlign(12); |  | 
|  | t1->SetTextSize(0.02); |  | 
|  | t1->DrawLatex(64.,98.7,isfile.str().c_str()); |  | 
|  | isfile.str(""); |  | 
| 752 |  |  | 
| 753 | //**************************************************************************************** | if((ph->GetOrbitalTime()<x[ev-minev-1] && ev-minev!=0) || ev-minev==MAXSTORAGE){ | 
| 754 | //Output figures --- Second sheet: | maxev=ev; | 
| 755 | //**************************************************************************************** | break; | 
| 756 |  | } | 
| 757 |  | else{ | 
| 758 |  | x[(ev-minev)]= ph->GetOrbitalTime(); | 
| 759 |  | ALARM=0; | 
| 760 |  | Int_t dsp=0; | 
| 761 |  | Int_t noacq=0; | 
| 762 |  | Int_t acq_dsp[12]; | 
| 763 |  | ULong_t acq_info_tmp=0; | 
| 764 |  | if(cod->Get(pctp->RunHeader)>0) acq_info_tmp=acq_info[cod->Get(pctp->RunHeader)-1]; | 
| 765 |  | else acq_info_tmp=acq_info[cod->Get(pctp->RunHeader)]; | 
| 766 |  | for(Int_t io=0;io<12;io++){ | 
| 767 |  | acq_dsp[dsp]=(acq_info_tmp>>(12+io))&(~(~0<<1)); | 
| 768 |  | if(((acq_info_tmp>>(12+io))&(~(~0<<1)))==0) | 
| 769 |  | noacq+=1; | 
| 770 |  | WARNING[io]=0; | 
| 771 |  | } | 
| 772 |  |  | 
| 773 | TCanvas *EventNumCanv=new TCanvas("Tracker_Detector_Report_5/6","",900,1200); | for(Int_t i=0; i<12; i++){ | 
| 774 | EventNumCanv->SetFillColor(10); |  | 
| 775 | EventNumCanv->Range(0,0,100,100); | if(i<12-noacq){ | 
| 776 | isfile<<"WARNINGS on DSP EVENT NUMBER "; | if(te->DSPnumber[i]<1 || te->DSPnumber[i]>12) { | 
| 777 | t->SetTextFont(32); | ALARM=1; | 
| 778 | t->SetTextColor(1); | break; | 
| 779 | t->SetTextAlign(12); | } | 
| 780 | t->SetTextSize(0.02); |  | 
| 781 | t->DrawLatex(2.,98.7,fromfile.str().c_str()); | dsp=te->DSPnumber[i]-1; | 
| 782 | t1->SetTextFont(32); | yc[(ev-minev)][dsp]= 0.051*te->compressiontime[i]; | 
| 783 | t1->SetTextColor(1); |  | 
| 784 | t1->SetTextAlign(12); | // | 
| 785 | t1->SetTextSize(0.02); | // Fill Cluster Signal and Lighting of the view histos | 
| 786 | t1->DrawLatex(68.4,98.7,isfile.str().c_str()); | for(Int_t j=0;j<3;j++){ | 
| 787 | isfile.str(""); | if(te->signcluster[i][j]!=0){ | 
| 788 |  | if((te->addrcluster[i][j]>6 && te->addrcluster[i][j]<505) ||(te->addrcluster[i][j]>518 && te->addrcluster[i][j]<1018)){ | 
| 789 |  | illuminazione[dsp]->Fill((Float_t)((j*1024.)+te->addrcluster[i][j])); | 
| 790 |  | } | 
| 791 |  | } | 
| 792 |  | } | 
| 793 |  | if(trk_cal_us[cod->Get(pctp->RunHeader)]!=104){ | 
| 794 |  | if(!(dsp%2)){ | 
| 795 |  | if(te->signcluster[i][0]!=0) landau1[dsp]->Fill((Float_t)(1024.-te->signcluster[i][0])); | 
| 796 |  | if(te->signcluster[i][1]!=0) landau2[dsp]->Fill((Float_t)(1024.-te->signcluster[i][1])); | 
| 797 |  | if(te->signcluster[i][2]!=0) landau3[dsp]->Fill((Float_t)(1024.-te->signcluster[i][2])); | 
| 798 |  | } | 
| 799 |  | else{ | 
| 800 |  | if(te->signcluster[i][0]!=0) landau1[dsp]->Fill((Float_t)te->signcluster[i][0]); | 
| 801 |  | if(te->signcluster[i][1]!=0) landau2[dsp]->Fill((Float_t)te->signcluster[i][1]); | 
| 802 |  | if(te->signcluster[i][2]!=0) landau3[dsp]->Fill((Float_t)te->signcluster[i][2]); | 
| 803 |  | } | 
| 804 |  | } | 
| 805 |  |  | 
| 806 |  | WARNING[i]=0; | 
| 807 |  | if(te->fc[i]!=0){ | 
| 808 |  | if(countFC[dsp]==0){ | 
| 809 |  | ALARM = 1;      //general alarm | 
| 810 |  | WARNING[i] = 1; // DSP warning | 
| 811 |  | } | 
| 812 |  | countFC[dsp]+=1; | 
| 813 |  | }; | 
| 814 |  |  | 
| 815 |  | if(te->fl1[i]!=0){ | 
| 816 |  | if(countFL1[dsp]==0){ | 
| 817 |  | ALARM = 1;      //general alarm | 
| 818 |  | WARNING[i] = 1; // DSP warning | 
| 819 |  | } | 
| 820 |  | countFL1[dsp]+=1; | 
| 821 |  | }; | 
| 822 |  |  | 
| 823 |  | if(te->fl2[i]!=0){ | 
| 824 |  | if(countFL2[dsp]==0){ | 
| 825 |  | ALARM = 1;      //general alarm | 
| 826 |  | WARNING[i] = 1; // DSP warning | 
| 827 |  | } | 
| 828 |  | countFL2[dsp]+=1; | 
| 829 |  | }; | 
| 830 |  |  | 
| 831 |  | if(te->fl3[i]!=0){ | 
| 832 |  | if(countFL3[dsp]==0){ | 
| 833 |  | ALARM = 1;      //general alarm | 
| 834 |  | WARNING[i] = 1; // DSP warning | 
| 835 |  | } | 
| 836 |  | countFL3[dsp]+=1; | 
| 837 |  | }; | 
| 838 |  |  | 
| 839 |  | if(te->fl4[i]!=0){ | 
| 840 |  | if(countFL4[dsp]==0){ | 
| 841 |  | ALARM = 1;      //general alarm | 
| 842 |  | WARNING[i] = 1; // DSP warning | 
| 843 |  | } | 
| 844 |  | countFL4[dsp]+=1; | 
| 845 |  | }; | 
| 846 |  |  | 
| 847 |  | if(te->fl5[i]!=0){ | 
| 848 |  | if(countFL5[dsp]==0){ | 
| 849 |  | ALARM = 1;      //general alarm | 
| 850 |  | WARNING[i] = 1; // DSP warning | 
| 851 |  | } | 
| 852 |  | countFL5[dsp]+=1; | 
| 853 |  | }; | 
| 854 |  |  | 
| 855 |  | if(te->fl6[i]!=0){ | 
| 856 |  | if(countFL6[dsp]==0){ | 
| 857 |  | ALARM = 1;      //general alarm | 
| 858 |  | WARNING[i] = 1; // DSP warning | 
| 859 |  | } | 
| 860 |  | countFL6[dsp]+=1; | 
| 861 |  | }; | 
| 862 |  |  | 
| 863 |  | if(dsp%2==0 && te->alarm[i]!=0){ // hardware alarm | 
| 864 |  | if(countALARMy==0) | 
| 865 |  | ALARM = 1; | 
| 866 |  | countALARMy+=1; | 
| 867 |  | }; | 
| 868 |  |  | 
| 869 |  | if(dsp%2==1 && te->alarm[i]!=0){ // hardware alarm | 
| 870 |  | if(countALARMx==0) | 
| 871 |  | ALARM = 1; | 
| 872 |  | countALARMx+=1; | 
| 873 |  | }; | 
| 874 |  |  | 
| 875 |  | //************************************************************************************** | 
| 876 |  | // warning for internal number | 
| 877 |  | //************************************************************************************** | 
| 878 |  | if(ev==minev && i<=10 && te->eventn[i]!=te->eventn[i+1]) ALARM=1; | 
| 879 |  | if((ev-minev)>=1 && eventn[i]+1!=te->eventn[i] && te->eventn[i]!=1) ALARM=1; | 
| 880 |  | } | 
| 881 |  | } | 
| 882 |  | eventint[(ev-minev)]=te->eventn[0]; | 
| 883 |  |  | 
| 884 |  | //******************************************************************************************** | 
| 885 |  | // file DSP warning | 
| 886 |  | //******************************************************************************************** | 
| 887 |  |  | 
| 888 |  | if(ALARM==1) { | 
| 889 |  | al=1; | 
| 890 |  | alarm <<endl<< "================================================="<< endl; | 
| 891 |  | alarm << "PSCU-Pkt N. "<< ph->GetCounter() ; | 
| 892 |  | alarm << " - OBT "<< ph->GetOrbitalTime() << " ms"<<endl; | 
| 893 |  | alarm << "Total events "<<nevent<<endl; | 
| 894 |  | alarm << "(ROOT-tree entry "<<ev<<" in page "<<ii+1<<" )"<<endl; | 
| 895 |  | alarm << "================================================="<< endl; | 
| 896 |  |  | 
| 897 |  | alarm << " DSPn"; | 
| 898 |  | alarm << " Counter"; | 
| 899 |  | alarm << " previous"; | 
| 900 |  | alarm << " Words"; | 
| 901 |  | alarm << " crc"; | 
| 902 |  | alarm << "  FC"; | 
| 903 |  | alarm << " FL1"; | 
| 904 |  | alarm << " FL2"; | 
| 905 |  | alarm << " FL3"; | 
| 906 |  | alarm << " FL4"; | 
| 907 |  | alarm << " FL5"; | 
| 908 |  | alarm << " FL6" << endl; | 
| 909 |  |  | 
| 910 |  | for(Int_t i=0; i<12 ; i++){ | 
| 911 |  | alarm.width(5); alarm << te->DSPnumber[i]; | 
| 912 |  | alarm.width(8); alarm << te->eventn[i]; | 
| 913 |  | alarm.width(8); alarm << eventn[i]; | 
| 914 |  | alarm.width(6); alarm << te->DATAlength[i]; | 
| 915 |  | alarm.width(4); alarm << te->crc[i]; | 
| 916 |  | alarm.width(4); alarm << te->fc[i]; | 
| 917 |  | alarm.width(4); alarm << te->fl1[i]; | 
| 918 |  | alarm.width(4); alarm << te->fl2[i]; | 
| 919 |  | alarm.width(4); alarm << te->fl3[i]; | 
| 920 |  | alarm.width(4); alarm << te->fl4[i]; | 
| 921 |  | alarm.width(4); alarm << te->fl5[i]; | 
| 922 |  | alarm.width(4); alarm << te->fl6[i]; | 
| 923 |  | if(te->alarm[i]!=0)alarm<<" >> ALARM "; | 
| 924 |  | if(WARNING[i]!=0)alarm<<" (DSP warning) "; | 
| 925 |  | alarm    << endl; | 
| 926 |  | } | 
| 927 |  | } | 
| 928 |  | for(Int_t i=0; i<12 ; i++) | 
| 929 |  | eventn[i]=te->eventn[i]; | 
| 930 |  | } | 
| 931 |  | } | 
| 932 |  | if(al==0) alarm << endl<< "Page "<<ii+1<< ": ------>  NO ALARM!!! <-------"<<endl; | 
| 933 |  | if(maxev==maxevent-1) { | 
| 934 |  | if(countALARMy!=0){ | 
| 935 |  | if(countALARMy%6!=0) alarm << endl<<endl<< "***** "<<countALARMy/6+1 <<" events with hardware alarm in Y-view *****"<<endl; | 
| 936 |  | else alarm << endl<<endl<< "***** "<<countALARMy/6 <<" events with hardware alarm in Y-view *****"<<endl; | 
| 937 |  | } | 
| 938 |  | if(countALARMx!=0){ | 
| 939 |  | if(countALARMx%6!=0) alarm << endl<<endl<< "***** "<<countALARMx/6+1 <<" events with hardware alarm in X-view *****"<<endl; | 
| 940 |  | else alarm << endl<<endl<< "***** "<<countALARMx/6 <<" events with hardware alarm in X-view *****"<<endl; | 
| 941 |  | } | 
| 942 |  | for(int p=0; p<12; p++){ | 
| 943 |  | if(countFC[p]!=0) alarm << endl<<endl<< "***** "<<countFC[p] <<" events with fc!=0 in DSP "<<p+1<<" *****"<<endl; | 
| 944 |  | if(countFL1[p]!=0) alarm << endl<<endl<< "***** "<<countFL1[p] <<" events with fl1!=0 in DSP "<<p+1<<" *****"<<endl; | 
| 945 |  | if(countFL2[p]!=0) alarm << endl<<endl<< "***** "<<countFL2[p] <<" events with fl2!=0 in DSP "<<p+1<<" *****"<<endl; | 
| 946 |  | if(countFL3[p]!=0) alarm << endl<<endl<< "***** "<<countFL3[p] <<" events with fl3!=0 in DSP "<<p+1<<" *****"<<endl; | 
| 947 |  | if(countFL4[p]!=0) alarm << endl<<endl<< "***** "<<countFL4[p] <<" events with fl4!=0 in DSP "<<p+1<<" *****"<<endl; | 
| 948 |  | if(countFL5[p]!=0) alarm << endl<<endl<< "***** "<<countFL5[p] <<" events with fl5!=0 in DSP "<<p+1<<" *****"<<endl; | 
| 949 |  | if(countFL6[p]!=0) alarm << endl<<endl<< "***** "<<countFL6[p] <<" events with fl6!=0 in DSP "<<p+1<<" *****"<<endl; | 
| 950 |  | } | 
| 951 |  | } | 
| 952 |  |  | 
| 953 |  | // | 
| 954 |  | // Draw the graphs | 
| 955 |  | for (Int_t i=0; i<12 ; i++){ | 
| 956 |  | Double_t yyc[maxev-minev]; | 
| 957 |  | for (Int_t v=0; v<maxev-minev; v++){ | 
| 958 |  | yyc[v]=yc[v][i]; | 
| 959 |  | } | 
| 960 |  |  | 
| 961 |  | CompTimeCanv[ii]->cd(); | 
| 962 |  | pad3[i]->SetFillColor(10); | 
| 963 |  | pad3[i]->SetFrameFillColor(10); | 
| 964 |  | pad3[i]->Draw(); | 
| 965 |  | pad3[i]->cd(); | 
| 966 |  | comprtime[i][ii]= new TGraph(maxev-minev,x,yyc); | 
| 967 |  | oss1<<"DSP  "<<i+1; | 
| 968 |  | comprtime[i][ii]->SetTitle(oss1.str().c_str()); | 
| 969 |  | comprtime[i][ii]->GetXaxis()->SetTitle("OBT (ms)"); | 
| 970 |  | comprtime[i][ii]->GetXaxis()->CenterTitle(); | 
| 971 |  | comprtime[i][ii]->GetYaxis()->SetTitle("compressiontime (ms)"); | 
| 972 |  | comprtime[i][ii]->GetYaxis()->CenterTitle(); | 
| 973 |  | // comprtime[i][ii]->GetYaxis()->SetRangeUser(0,3); | 
| 974 |  | comprtime[i][ii]->Draw("ap"); | 
| 975 |  | oss1.str(""); | 
| 976 |  | CompTimeCanv[ii]->Update(); | 
| 977 |  | } | 
| 978 |  |  | 
| 979 |  |  | 
| 980 |  | EventNumCanv[ii]->cd(); | 
| 981 |  | pt = new TPad("pt"," ",0.02,0.01,1.,0.98,18,0,0); | 
| 982 |  | pt->SetFillColor(10); | 
| 983 |  | pt->SetFrameFillColor(10); | 
| 984 |  | pt->Draw(); | 
| 985 |  | pt->cd(); | 
| 986 |  | eventnumb[ii]=new TGraph(maxev-minev,x,eventint); | 
| 987 |  | eventnumb[ii]->SetTitle(""); | 
| 988 |  | eventnumb[ii]->GetXaxis()->SetLabelSize(0.02); | 
| 989 |  | eventnumb[ii]->GetXaxis()->SetTitleSize(0.03); | 
| 990 |  | eventnumb[ii]->GetXaxis()->SetTitle("OBT (ms)"); | 
| 991 |  | eventnumb[ii]->GetXaxis()->CenterTitle(); | 
| 992 |  | eventnumb[ii]->GetXaxis()->SetTickLength(0.01); | 
| 993 |  | eventnumb[ii]->GetXaxis()->SetTitleOffset(1.1); | 
| 994 |  | eventnumb[ii]->GetYaxis()->SetLabelSize(0.02); | 
| 995 |  | eventnumb[ii]->GetYaxis()->SetTitleSize(0.03); | 
| 996 |  | eventnumb[ii]->GetYaxis()->SetTitle("DSP event-number"); | 
| 997 |  | eventnumb[ii]->GetYaxis()->CenterTitle(); | 
| 998 |  | eventnumb[ii]->GetYaxis()->SetTitleOffset(2.); | 
| 999 |  | eventnumb[ii]->SetMarkerStyle(21); | 
| 1000 |  | eventnumb[ii]->SetMarkerColor(kBlue); | 
| 1001 |  | eventnumb[ii]->SetMarkerSize(0.2); | 
| 1002 |  | oss1.str(""); | 
| 1003 |  | oss1<<"number of events in this graph: "<<maxev-minev; | 
| 1004 |  | t->SetTextColor(kBlue); | 
| 1005 |  | t->SetTextSize(0.02); | 
| 1006 |  | double xtex=0,ytex=0; | 
| 1007 |  | xtex=x[maxev-minev-1]-(x[maxev-minev-1]-x[0])/3; | 
| 1008 |  | ytex=1000.+eventnumb[ii]->GetYaxis()->GetXmax(); | 
| 1009 |  | t->DrawLatex(xtex,ytex,oss1.str().c_str()); | 
| 1010 |  | oss1.str(""); | 
| 1011 |  | eventnumb[ii]->Draw("ap"); | 
| 1012 |  | EventNumCanv[ii]->Update(); | 
| 1013 |  |  | 
| 1014 |  | minev=maxev; | 
| 1015 |  | if(maxev==maxevent-1) { | 
| 1016 |  | cntpgdat=ii+1; | 
| 1017 |  | break; | 
| 1018 |  | } | 
| 1019 |  |  | 
| 1020 |  | } | 
| 1021 |  |  | 
| 1022 |  | alarm.close(); | 
| 1023 |  |  | 
| 1024 | //**************************************************************************************** | //**************************************************************************************** | 
| 1025 | //Output figures --- Third sheet: | //Cluster Signal ladder1 Output Pages | 
| 1026 | //**************************************************************************************** | //**************************************************************************************** | 
| 1027 |  |  | 
| 1028 | TCanvas *LandauCanv1=new TCanvas("Landau ladder1","",900,1200); | fromfile.str(""); | 
| 1029 |  | fromfile<<"FTrkQLook_EXPERT      File: "<<ffile; | 
| 1030 |  | isfile<<"Cluster Signal ladder1"; | 
| 1031 |  | LandauCanv1=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200); | 
| 1032 | LandauCanv1->SetFillColor(10); | LandauCanv1->SetFillColor(10); | 
| 1033 | LandauCanv1->Range(0,0,100,100); | LandauCanv1->Range(0,0,100,100); | 
|  | isfile<<"Landau ladder1"; |  | 
| 1034 |  |  | 
| 1035 | t->SetTextFont(32); | t->SetTextFont(32); | 
| 1036 | t->SetTextColor(1); | t->SetTextColor(1); | 
| 1045 | isfile.str(""); | isfile.str(""); | 
| 1046 |  |  | 
| 1047 | //**************************************************************************************** | //**************************************************************************************** | 
| 1048 | //Output figures --- Third sheet: | //Cluster Signal ladder2 Output Pages | 
| 1049 | //**************************************************************************************** | //**************************************************************************************** | 
| 1050 |  |  | 
| 1051 | TCanvas *LandauCanv2=new TCanvas("Landau ladder2","",900,1200); | isfile<<"Cluster Signal ladder2"; | 
| 1052 |  | LandauCanv2=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200); | 
| 1053 | LandauCanv2->SetFillColor(10); | LandauCanv2->SetFillColor(10); | 
| 1054 | LandauCanv2->Range(0,0,100,100); | LandauCanv2->Range(0,0,100,100); | 
|  | isfile<<"Landau ladder2"; |  | 
| 1055 |  |  | 
| 1056 | t->SetTextFont(32); | t->SetTextFont(32); | 
| 1057 | t->SetTextColor(1); | t->SetTextColor(1); | 
| 1066 | isfile.str(""); | isfile.str(""); | 
| 1067 |  |  | 
| 1068 | //**************************************************************************************** | //**************************************************************************************** | 
| 1069 | //Output figures --- Third sheet: | //Cluster Signal ladder3 Output Pages | 
| 1070 | //**************************************************************************************** | //**************************************************************************************** | 
| 1071 |  |  | 
| 1072 | TCanvas *LandauCanv3=new TCanvas("Landau ladder3","",900,1200); | isfile<<"Cluster Signal ladder3"; | 
| 1073 |  | LandauCanv3=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200); | 
| 1074 | LandauCanv3->SetFillColor(10); | LandauCanv3->SetFillColor(10); | 
| 1075 | LandauCanv3->Range(0,0,100,100); | LandauCanv3->Range(0,0,100,100); | 
|  | isfile<<"Landau ladder3"; |  | 
| 1076 |  |  | 
| 1077 | t->SetTextFont(32); | t->SetTextFont(32); | 
| 1078 | t->SetTextColor(1); | t->SetTextColor(1); | 
| 1087 | isfile.str(""); | isfile.str(""); | 
| 1088 |  |  | 
| 1089 | //**************************************************************************************** | //**************************************************************************************** | 
| 1090 | //Output figures --- Fourth sheet: | //Lighting of the views Output Pages | 
| 1091 | //**************************************************************************************** | //**************************************************************************************** | 
| 1092 |  |  | 
| 1093 | TCanvas *IlluminaCanv=new TCanvas("Illuminazione","",900,1200); | isfile<<"lighting of the views"; | 
| 1094 |  | IlluminaCanv=new TCanvas(isfile.str().c_str(),isfile.str().c_str(),900,1200); | 
| 1095 | IlluminaCanv->SetFillColor(10); | IlluminaCanv->SetFillColor(10); | 
| 1096 | IlluminaCanv->Range(0,0,100,100); | IlluminaCanv->Range(0,0,100,100); | 
|  | isfile<<"lighting of the views"; |  | 
| 1097 | t->SetTextFont(32); | t->SetTextFont(32); | 
| 1098 | t->SetTextColor(1); | t->SetTextColor(1); | 
| 1099 | t->SetTextAlign(12); | t->SetTextAlign(12); | 
| 1105 | t1->SetTextSize(0.02); | t1->SetTextSize(0.02); | 
| 1106 | t1->DrawLatex(70.,98.7,isfile.str().c_str()); | t1->DrawLatex(70.,98.7,isfile.str().c_str()); | 
| 1107 | isfile.str(""); | isfile.str(""); | 
|  |  |  | 
|  | //**************************************************************************************** |  | 
|  | //Output figures --- Fifth sheet: |  | 
|  | //**************************************************************************************** |  | 
|  |  |  | 
|  | TCanvas *TempCanv=new TCanvas("Tracker_Detector_Temperaturt","",900,1200); |  | 
|  | TempCanv->SetFillColor(10); |  | 
|  | TempCanv->Range(0,0,100,100); |  | 
|  | isfile<<"Temperatures vs OBT"; |  | 
|  |  |  | 
|  | t->SetTextFont(32); |  | 
|  | t->SetTextColor(1); |  | 
|  | t->SetTextAlign(12); |  | 
|  | t->SetTextSize(0.02); |  | 
|  | t->DrawLatex(2.,98.7,fromfile.str().c_str()); |  | 
|  | t1->SetTextFont(32); |  | 
|  | t1->SetTextColor(1); |  | 
|  | t1->SetTextAlign(12); |  | 
|  | t1->SetTextSize(0.02); |  | 
|  | t1->DrawLatex(80.,98.7,isfile.str().c_str()); |  | 
|  | isfile.str(""); |  | 
| 1108 |  |  | 
| 1109 | //************************************************************************************* | // | 
| 1110 | //book pads and histos | // Draw the histos | 
|  | //*************************************************************************************** |  | 
|  |  |  | 
|  | TPad *pad1[12],*pad2[12],*pad3[12],*pad4[12],*pad5[12],*pad6[5];          //pad for histos |  | 
|  | Double_t posy = 0.95;    // up y-coord - top pads |  | 
|  | Double_t hpad = 0;   // pad height |  | 
|  | Double_t posx1=0;          // left  x-coord - pad column |  | 
|  | Double_t posx0=0;          //       x-coord - column division |  | 
|  | Double_t wrel = 0;     // relative x size of first sub-column |  | 
|  | Double_t marg = 0.004;   // margin among pads |  | 
|  | Double_t tposy = 0.95;    // up y-coord - top pads |  | 
|  | Double_t thpad = 0;   // pad height |  | 
|  | Double_t tposx1=0;          // left  x-coord - pad column |  | 
|  | Double_t tposx0=0;          //       x-coord - column division |  | 
|  | Double_t twrel = 0;     // relative x size of first sub-column |  | 
|  | Double_t tmarg = 0.004;   // margin among pads |  | 
|  |  |  | 
|  | hpad = (posy-marg*11)/6; |  | 
|  | wrel = (1-marg*4)/2; |  | 
|  | thpad = (tposy-tmarg*5)/3; |  | 
|  | twrel = (1-tmarg*4)/2; |  | 
|  | stringstream title; |  | 
|  | stringstream hid; |  | 
|  |  |  | 
|  | for(Int_t n = 0; n<12; n++) { |  | 
|  |  |  | 
|  | if ( (n+1)%2==1 ) { |  | 
|  | if(n>1) posy = posy-(marg*2+hpad); |  | 
|  | posx1 = marg; |  | 
|  | posx0 = posx1 + wrel; |  | 
|  | } |  | 
|  | else { |  | 
|  | posx1 = posx0 + 2*marg; |  | 
|  | posx0 = posx1 + wrel; |  | 
|  | } |  | 
|  |  |  | 
|  | if ( (n+1)%2==1 ) { |  | 
|  | if(n>1) tposy = tposy-(tmarg*2+thpad); |  | 
|  | tposx1 = tmarg; |  | 
|  | tposx0 = tposx1 + twrel; |  | 
|  | } |  | 
|  | else { |  | 
|  | tposx1 = tposx0 + 2*tmarg; |  | 
|  | tposx0 = tposx1 + twrel; |  | 
|  | } |  | 
|  |  |  | 
|  |  |  | 
|  | /* -----------> pad for histograms  */ |  | 
|  | pad1[n] = new TPad("pad1"," ",posx1,posy-hpad,posx0,posy,18,0,0); |  | 
|  | pad2[n] = new TPad("pad2"," ",posx1,posy-hpad,posx0,posy,18,0,0); |  | 
|  | pad3[n] = new TPad("pad3"," ",posx1,posy-hpad,posx0,posy,18,0,0); |  | 
|  | pad4[n] = new TPad("pad4"," ",posx1,posy-hpad,posx0,posy,18,0,0); |  | 
|  | pad5[n] = new TPad("pad5"," ",posx1,posy-hpad,posx0,posy,18,0,0); |  | 
|  | if(n<5) pad6[n] = new TPad("pad6"," ",tposx1,tposy-thpad,tposx0,tposy,18,0,0); |  | 
|  |  |  | 
|  |  |  | 
|  | /* -----------> HISTOGRAMS          */ |  | 
|  |  |  | 
|  | oss1<<"DSP  "<<n+1; |  | 
|  | oss2<<"DSPh  "<<n+1; |  | 
|  | oss3<<"DSP h "<<n+1; |  | 
|  | oss4<<"DSP   h"<<n+1; |  | 
|  |  |  | 
|  | landau1[n]=new TH1F(oss1.str().c_str(),oss1.str().c_str(),1201,-0.5,1200.5); |  | 
|  | landau1[n]->GetXaxis()->SetTitle("max signal"); |  | 
|  | landau1[n]->GetXaxis()->CenterTitle(); |  | 
|  | landau2[n]=new TH1F(oss2.str().c_str(),oss1.str().c_str(),1201,-0.5,1200.5); |  | 
|  | landau2[n]->GetXaxis()->SetTitle("max signal"); |  | 
|  | landau2[n]->GetXaxis()->CenterTitle(); |  | 
|  | landau3[n]=new TH1F(oss3.str().c_str(),oss1.str().c_str(),1201,-0.5,1200.5); |  | 
|  | landau3[n]->GetXaxis()->SetTitle("max signal"); |  | 
|  | landau3[n]->GetXaxis()->CenterTitle(); |  | 
|  |  |  | 
|  | illuminazione[n]=new TH1F(oss4.str().c_str(),oss1.str().c_str(),3073,-0.5,3072.5); |  | 
|  | illuminazione[n]->GetXaxis()->SetTitle("strip with max signal"); |  | 
|  | illuminazione[n]->GetXaxis()->CenterTitle(); |  | 
|  |  |  | 
|  | oss1.str(""); |  | 
|  | oss2.str(""); |  | 
|  | oss3.str(""); |  | 
|  | oss4.str(""); |  | 
|  | }; |  | 
|  |  |  | 
|  |  |  | 
|  | //********************************************************************************** |  | 
|  | // Fill Graphs and Histos |  | 
|  | //********************************************************************************** |  | 
|  |  |  | 
|  | Double_t maxhist=0; |  | 
|  | TBox b; |  | 
|  | b.SetFillColor(5); |  | 
|  |  |  | 
| 1111 | for (Int_t i=0; i<12 ; i++){ | for (Int_t i=0; i<12 ; i++){ | 
| 1112 |  |  | 
| 1113 | for (Int_t ev=minevent; ev<maxevent; ev++){ | TBox b; | 
| 1114 | yyc[(ev-minevent)]=yc[12*(ev-minevent)+i]; |  | 
| 1115 | // if( land[12*(ev-minevent)+i][0]!=0 && illum[12*(ev-minevent)+i][0]>510 && illum[12*(ev-minevent)+i][0]<515)  landau1[i]->Fill(land[12*(ev-minevent)+i][0]); | Float_t maxhist=0,va1x=0; | 
|  | if( land[12*(ev-minevent)+i][0]!=0)  landau1[i]->Fill(land[12*(ev-minevent)+i][0]); |  | 
|  | if( land[12*(ev-minevent)+i][1]!=0)  landau2[i]->Fill(land[12*(ev-minevent)+i][1]); |  | 
|  | if( land[12*(ev-minevent)+i][2]!=0)  landau3[i]->Fill(land[12*(ev-minevent)+i][2]); |  | 
|  | for(Int_t j=0;j<3;j++){ |  | 
|  | if(land[12*(ev-minevent)+i][j]!=0){ |  | 
|  | hi=(j*1024)+illum[12*(ev-minevent)+i][j]; |  | 
|  | illuminazione[i]->Fill(hi); |  | 
|  | } |  | 
|  | } |  | 
|  | } |  | 
|  |  |  | 
| 1116 | LandauCanv1->cd(); | LandauCanv1->cd(); | 
| 1117 | pad1[i]->SetFillColor(10); | pad1[i]->SetFillColor(10); | 
| 1118 | pad1[i]->SetFrameFillColor(10); | pad1[i]->SetFrameFillColor(10); | 
| 1119 | pad1[i]->Draw(); | pad1[i]->Draw(); | 
| 1120 | pad1[i]->cd(); | pad1[i]->cd(); | 
| 1121 |  | landau1[i]->GetXaxis()->SetTitle("max signal"); | 
| 1122 |  | landau1[i]->GetXaxis()->CenterTitle(); | 
| 1123 | landau1[i]->Draw(""); | landau1[i]->Draw(""); | 
| 1124 |  | LandauCanv1->Update(); | 
| 1125 |  |  | 
| 1126 | LandauCanv2->cd(); | LandauCanv2->cd(); | 
| 1127 | pad4[i]->SetFillColor(10); | pad4[i]->SetFillColor(10); | 
| 1128 | pad4[i]->SetFrameFillColor(10); | pad4[i]->SetFrameFillColor(10); | 
| 1129 | pad4[i]->Draw(); | pad4[i]->Draw(); | 
| 1130 | pad4[i]->cd(); | pad4[i]->cd(); | 
| 1131 |  | landau2[i]->GetXaxis()->SetTitle("max signal"); | 
| 1132 |  | landau2[i]->GetXaxis()->CenterTitle(); | 
| 1133 | landau2[i]->Draw(""); | landau2[i]->Draw(""); | 
| 1134 |  | LandauCanv2->Update(); | 
| 1135 |  |  | 
| 1136 | LandauCanv3->cd(); | LandauCanv3->cd(); | 
| 1137 | pad5[i]->SetFillColor(10); | pad5[i]->SetFillColor(10); | 
| 1138 | pad5[i]->SetFrameFillColor(10); | pad5[i]->SetFrameFillColor(10); | 
| 1139 | pad5[i]->Draw(); | pad5[i]->Draw(); | 
| 1140 | pad5[i]->cd(); | pad5[i]->cd(); | 
| 1141 |  | landau3[i]->GetXaxis()->SetTitle("max signal"); | 
| 1142 |  | landau3[i]->GetXaxis()->CenterTitle(); | 
| 1143 | landau3[i]->Draw(""); | landau3[i]->Draw(""); | 
| 1144 |  | LandauCanv3->Update(); | 
| 1145 |  |  | 
| 1146 |  |  | 
| 1147 |  | li.SetLineColor(38); | 
| 1148 |  | li.SetLineStyle(4); | 
| 1149 |  | li.SetLineWidth(2); | 
| 1150 |  | liva1.SetLineColor(42); | 
| 1151 |  | liva1.SetLineStyle(3); | 
| 1152 |  | liva1.SetLineWidth(1); | 
| 1153 |  |  | 
| 1154 | IlluminaCanv->cd(); | IlluminaCanv->cd(); | 
| 1155 | pad2[i]->SetFillColor(10); | pad2[i]->SetFillColor(10); | 
| 1156 | pad2[i]->SetFrameFillColor(10); | pad2[i]->SetFrameFillColor(10); | 
| 1157 |  | pad2[i]->SetLogy(); | 
| 1158 | pad2[i]->Draw(); | pad2[i]->Draw(); | 
| 1159 | pad2[i]->cd(); | pad2[i]->cd(); | 
| 1160 | pad2[i]->SetLogy(); | illuminazione[i]->GetXaxis()->SetTitle("strip with max signal"); | 
| 1161 | // illuminazione[i]->SetStats(KFALSE); | illuminazione[i]->GetXaxis()->CenterTitle(); | 
| 1162 | if(i==1){ | illuminazione[i]->Draw(""); | 
| 1163 | illuminazione[i]->Draw("ah"); | maxhist= illuminazione[i]->GetMaximum(); | 
| 1164 | maxhist= illuminazione[i]->GetMaximum(); | if(i==0){ | 
| 1165 | b.DrawBox(2816.,0.,3060.,maxhist); | b.SetFillColor(107); | 
| 1166 | illuminazione[i]->Draw("axis same"); | b.SetFillStyle(3954); | 
| 1167 | illuminazione[i]->Draw("same ]["); | b.DrawBox(768.,0.,2047.,maxhist); | 
| 1168 |  | } | 
| 1169 |  | else if(i==1){ | 
| 1170 |  | b.SetFillColor(6); | 
| 1171 |  | b.SetFillStyle(3945); | 
| 1172 |  | b.DrawBox(2944.,0.,3070.,maxhist); | 
| 1173 |  |  | 
| 1174 |  | b.SetFillColor(107); | 
| 1175 |  | b.SetFillStyle(3954); | 
| 1176 |  | b.DrawBox(2816.,0.,2944.,maxhist); | 
| 1177 |  | b.DrawBox(2048.,0.,2176.,maxhist); | 
| 1178 |  | } | 
| 1179 |  | else if(i==4){ | 
| 1180 |  | b.SetFillColor(107); | 
| 1181 |  | b.SetFillStyle(3954); | 
| 1182 |  | b.DrawBox(384.,0.,512.,maxhist); | 
| 1183 | } | } | 
| 1184 | else if(i==6){ | else if(i==6){ | 
| 1185 | illuminazione[i]->Draw("ah"); | b.SetFillColor(6); | 
| 1186 | maxhist= illuminazione[i]->GetMaximum(); | b.SetFillStyle(3945); | 
| 1187 | b.DrawBox(2560.,0.,2816.,maxhist); | b.DrawBox(2560.,0.,2816.,maxhist); | 
| 1188 |  | b.DrawBox(1024.,0.,1535.,maxhist); | 
| 1189 |  |  | 
| 1190 |  | b.SetFillColor(107); | 
| 1191 |  | b.SetFillStyle(3954); | 
| 1192 | b.DrawBox(512.,0.,768.,maxhist); | b.DrawBox(512.,0.,768.,maxhist); | 
| 1193 | b.DrawBox(1024.,0.,1792.,maxhist); | b.DrawBox(1536.,0.,1792.,maxhist); | 
| 1194 | illuminazione[i]->Draw("axis same"); | } | 
| 1195 | illuminazione[i]->Draw("same]["); | else if(i==7){ | 
| 1196 |  | b.SetFillColor(107); | 
| 1197 |  | b.SetFillStyle(3954); | 
| 1198 |  | b.DrawBox(512.,0.,768.,maxhist); | 
| 1199 |  | } | 
| 1200 |  | else if(i==8){ | 
| 1201 |  | b.SetFillColor(107); | 
| 1202 |  | b.SetFillStyle(3954); | 
| 1203 |  | b.DrawBox(512.,0.,768.,maxhist); | 
| 1204 |  | } | 
| 1205 |  | else if(i==9){ | 
| 1206 |  | b.SetFillColor(107); | 
| 1207 |  | b.SetFillStyle(3954); | 
| 1208 |  | b.DrawBox(256.,0.,384.,maxhist); | 
| 1209 |  | } | 
| 1210 |  | else if(i==10){ | 
| 1211 |  | b.SetFillColor(107); | 
| 1212 |  | b.SetFillStyle(3954); | 
| 1213 |  | b.DrawBox(2560.,0.,3070.,maxhist); | 
| 1214 | } | } | 
| 1215 | else if(i==11){ | else if(i==11){ | 
| 1216 | illuminazione[i]->Draw("ah"); | b.SetFillColor(6); | 
| 1217 | maxhist= illuminazione[i]->GetMaximum(); | b.SetFillStyle(3945); | 
| 1218 | b.DrawBox(768.,0.,1024.,maxhist); | b.DrawBox(768.,0.,1024.,maxhist); | 
|  | illuminazione[i]->Draw("axis same"); |  | 
|  | illuminazione[i]->Draw("same]["); |  | 
|  | } |  | 
|  | else illuminazione[i]->Draw(""); |  | 
| 1219 |  |  | 
| 1220 | CompTimeCanv->cd(); | b.SetFillColor(107); | 
| 1221 | pad3[i]->SetFillColor(10); | b.SetFillStyle(3954); | 
| 1222 | pad3[i]->SetFrameFillColor(10); | b.DrawBox(0.,0.,512.,maxhist); | 
| 1223 | pad3[i]->Draw(); | b.DrawBox(1920.,0.,2560.,maxhist); | 
| 1224 | pad3[i]->cd(); | } | 
| 1225 | comprtime= new TGraph(nevent,x,yyc); | for(int va=1; va<24; va++){ | 
| 1226 | oss1<<"DSP  "<<i+1; | va1x=128*va; | 
| 1227 | comprtime->SetTitle(oss1.str().c_str()); | liva1.DrawLine(va1x,0.,va1x,maxhist); | 
| 1228 | comprtime->GetXaxis()->SetTitle("OBT (ms)"); | } | 
| 1229 | comprtime->GetXaxis()->CenterTitle(); | li.DrawLine(1024.5,0,1024.5,maxhist); | 
| 1230 | comprtime->GetYaxis()->SetTitle("compressiontime (ms)"); | li.DrawLine(2048.5,0,2048.5,maxhist); | 
| 1231 | comprtime->GetYaxis()->CenterTitle(); | IlluminaCanv->Update(); | 
|  | comprtime->GetYaxis()->SetRangeUser(0,2); |  | 
|  | comprtime->Draw("ap"); |  | 
|  | oss1.str(""); |  | 
|  | }; |  | 
|  |  |  | 
|  | EventNumCanv->cd(); |  | 
|  | TPad *pt0=new TPad("pt0"," ",0.704,0.004,0.996,0.98); |  | 
|  | pt1 = new TPaveText(0.004,0.004,0.986,0.996); |  | 
|  | pt = new TPad("pt"," ",0.004,0.004,0.7,0.98,18,0,0); |  | 
|  | pt1->SetFillColor(10); |  | 
|  | pt1->ReadFile(out + "warning.txt"); |  | 
|  | pt1->SetTextAlign(22); |  | 
|  | pt1->SetTextSize(0.035); |  | 
|  | pt0->SetFillColor(10); |  | 
|  | pt0->SetFrameFillColor(10); |  | 
|  | pt0->Draw(); |  | 
|  | pt0->cd(); |  | 
|  | pt1->Draw(); |  | 
|  | EventNumCanv->cd(); |  | 
|  | pt->SetFillColor(10); |  | 
|  | pt->SetFrameFillColor(10); |  | 
|  | pt->Draw(); |  | 
|  | pt->cd(); |  | 
|  | eventnumb=new TGraph(nevent,x,eventint); |  | 
|  | eventnumb->SetTitle(""); |  | 
|  | eventnumb->GetXaxis()->SetLabelSize(0.04); |  | 
|  | eventnumb->GetXaxis()->SetTitleSize(0.04); |  | 
|  | eventnumb->GetXaxis()->SetTitle("OBT (ms)"); |  | 
|  | eventnumb->GetXaxis()->CenterTitle(); |  | 
|  | eventnumb->GetXaxis()->SetTickLength(0.01); |  | 
|  | eventnumb->GetXaxis()->SetTitleOffset(1.2); |  | 
|  | eventnumb->GetYaxis()->SetLabelSize(0.04); |  | 
|  | eventnumb->GetYaxis()->SetTitleSize(0.04); |  | 
|  | eventnumb->GetYaxis()->SetTitle("DSP event-number"); |  | 
|  | eventnumb->GetYaxis()->CenterTitle(); |  | 
|  | eventnumb->GetYaxis()->SetTitleOffset(1.5); |  | 
|  | eventnumb->SetMarkerStyle(21); |  | 
|  | eventnumb->SetMarkerColor(kBlue); |  | 
|  | eventnumb->SetMarkerSize(0.3); |  | 
|  | eventnumb->Draw("ap"); |  | 
|  |  |  | 
|  | for(Int_t i=0; i<5; i++){ |  | 
|  | for (Int_t ev=0; ev<tsize; ev++){ |  | 
|  | tempt_tmp[ev]=(Int_t)(((3.3*tempt[ev][i]/4096)-0.586)/0.0231); |  | 
|  | } |  | 
|  | TempCanv->cd(); |  | 
|  | tit<<"T"<<i+5<<" (magnetic module "<<i+1<<")"; |  | 
|  | pad6[i]->SetFillColor(10); |  | 
|  | pad6[i]->Draw(); |  | 
|  | pad6[i]->cd(); |  | 
|  | temp[i]= new TGraph(tsize,xt,tempt_tmp); |  | 
|  | temp[i]->SetTitle(tit.str().c_str()); |  | 
|  | temp[i]->GetXaxis()->SetLabelSize(0.04); |  | 
|  | temp[i]->GetXaxis()->SetTitleSize(0.04); |  | 
|  | temp[i]->GetXaxis()->SetTitle("OBT (ms)"); |  | 
|  | temp[i]->GetXaxis()->CenterTitle(); |  | 
|  | temp[i]->GetXaxis()->SetTitleOffset(0.85); |  | 
|  | temp[i]->GetYaxis()->SetTitleOffset(1.2); |  | 
|  | temp[i]->GetYaxis()->SetLabelOffset(0.001); |  | 
|  | temp[i]->GetYaxis()->SetLabelSize(0.04); |  | 
|  | temp[i]->GetYaxis()->SetTitleSize(0.04); |  | 
|  | temp[i]->GetYaxis()->SetTitle("Temperatures ( ^{o}C)"); |  | 
|  | temp[i]->GetYaxis()->CenterTitle(); |  | 
|  | temp[i]->SetMarkerStyle(21); |  | 
|  | temp[i]->SetMarkerSize(0.2); |  | 
|  | temp[i]->Draw("ap"); |  | 
|  | tit.str(""); |  | 
| 1232 | } | } | 
| 1233 | CompTimeCanv->Update(); |  | 
|  | LandauCanv1->Update(); |  | 
|  | LandauCanv2->Update(); |  | 
|  | LandauCanv3->Update(); |  | 
|  | IlluminaCanv->Update(); |  | 
|  | TempCanv->Update(); |  | 
|  |  |  | 
| 1234 | printf("... end of packets. \n"); | printf("... end of packets. \n"); | 
| 1235 |  |  | 
| 1236 | //************************************************************************* | //************************************************************************* | 
| 1237 | // Save output Files | // Save output Files | 
| 1238 | //************************************************************************* | //************************************************************************* | 
| 1239 | stringstream out1,out2,out3,command; | stringstream out1,out2,out3,command; | 
| 1240 |  | Int_t totpg=0; | 
| 1241 | if(!strcmp(outfile.Data(),"ps")||!strcmp(outfile.Data(),"pdf")){ | if(cntpgtemp>cntpgdat) totpg=cntpgtemp; | 
| 1242 | out1.str(""); | else if(cntpgtemp<=cntpgdat) totpg=cntpgdat; | 
| 1243 | out2.str(""); |  | 
| 1244 | out3.str(""); | for(Int_t fl=0;fl<totpg;fl++){ | 
| 1245 |  |  | 
| 1246 | out1<<ffile<<"_FTrkQLook_EXPERT.ps("; | if(!strcmp(outfile.Data(),"ps")||!strcmp(outfile.Data(),"pdf")){ | 
| 1247 | out2<<ffile<<"_FTrkQLook_EXPERT.ps"; | out1.str(""); | 
| 1248 | out3<<ffile<<"_FTrkQLook_EXPERT.ps)"; | out2.str(""); | 
| 1249 |  | out3.str(""); | 
| 1250 | CompTimeCanv->Print(out+out1.str().c_str(),"Portrait"); |  | 
| 1251 | EventNumCanv->Print(out+out2.str().c_str(),"Portrait"); | out1<<ffile<<"_FTrkQLook_EXPERT.ps("; | 
| 1252 | LandauCanv1->Print(out+out2.str().c_str(),"Portrait"); | out2<<ffile<<"_FTrkQLook_EXPERT.ps"; | 
| 1253 | LandauCanv2->Print(out+out2.str().c_str(),"Portrait"); | out3<<ffile<<"_FTrkQLook_EXPERT.ps)"; | 
|  | LandauCanv3->Print(out+out2.str().c_str(),"Portrait"); |  | 
|  | IlluminaCanv->Print(out+out2.str().c_str(),"Portrait"); |  | 
|  | TempCanv->Print(out+out3.str().c_str(),"Portrait"); |  | 
| 1254 |  |  | 
| 1255 | if(!strcmp(outfile.Data(),"pdf")){ | if(totpg==1){ | 
| 1256 | stringstream com; | CompTimeCanv[fl]->Print(out+out1.str().c_str(),"Portrait"); | 
| 1257 | com<<"ps2pdf13 "<<out<<ffile<<"_FTrkQLook_EXPERT.ps "<<out<<ffile<<"_FTrkQLook_EXPERT.pdf"; | EventNumCanv[fl]->Print(out+out2.str().c_str(),"Portrait"); | 
| 1258 | system(com.str().c_str()); | TempCanv[fl]->Print(out+out2.str().c_str(),"Portrait"); | 
| 1259 | printf("\n---> ps file converted in pdf format!\n"); | BfieldCanv[fl]->Print(out+out2.str().c_str(),"Portrait"); | 
| 1260 | com.str(""); | LandauCanv1->Print(out+out2.str().c_str(),"Portrait"); | 
| 1261 | com<<"rm -f "<<out<<ffile<<"_FTrkQLook_EXPERT.ps "; | LandauCanv2->Print(out+out2.str().c_str(),"Portrait"); | 
| 1262 | system(com.str().c_str()); | LandauCanv3->Print(out+out2.str().c_str(),"Portrait"); | 
| 1263 | printf("---> ps file removed!\n\n"); | IlluminaCanv->Print(out+out3.str().c_str(),"Portrait"); | 
| 1264 | com.str(""); | } | 
| 1265 |  | else if(totpg>1){ | 
| 1266 |  | if(fl==0) CompTimeCanv[fl]->Print(out+out1.str().c_str(),"Portrait"); | 
| 1267 |  | if(fl>0 && fl<cntpgdat) CompTimeCanv[fl]->Print(out+out2.str().c_str(),"Portrait"); | 
| 1268 |  | if(fl<cntpgdat) EventNumCanv[fl]->Print(out+out2.str().c_str(),"Portrait"); | 
| 1269 |  | if(fl<cntpgmag) BfieldCanv[fl]->Print(out+out2.str().c_str(),"Portrait"); | 
| 1270 |  | if(fl<cntpgtemp) TempCanv[fl]->Print(out+out2.str().c_str(),"Portrait"); | 
| 1271 |  | if(fl==totpg-1){ | 
| 1272 |  | LandauCanv1->Print(out+out2.str().c_str(),"Portrait"); | 
| 1273 |  | LandauCanv2->Print(out+out2.str().c_str(),"Portrait"); | 
| 1274 |  | LandauCanv3->Print(out+out2.str().c_str(),"Portrait"); | 
| 1275 |  | IlluminaCanv->Print(out+out3.str().c_str(),"Portrait"); | 
| 1276 |  | } | 
| 1277 |  | } | 
| 1278 | } | } | 
| 1279 |  | else{ | 
| 1280 |  | out1.str(""); | 
| 1281 |  | out1<<ffile<<"_FTrkQLook_EXPERT-CompTime-pag"<<fl+1<<"."<<outfile.Data(); | 
| 1282 |  | if(fl<cntpgdat) CompTimeCanv[fl]->Print(out+out1.str().c_str()); | 
| 1283 |  | out1.str(""); | 
| 1284 |  | out1<<ffile<<"_FTrkQLook_EXPERT-BField-pag"<<fl+1<<"."<<outfile.Data(); | 
| 1285 |  | if(fl<cntpgmag) BfieldCanv[fl]->Print(out+out1.str().c_str()); | 
| 1286 |  | out1.str(""); | 
| 1287 |  | out1<<ffile<<"_FTrkQLook_EXPERT-Temp-pag"<<fl+1<<"."<<outfile.Data(); | 
| 1288 |  | if(fl<cntpgtemp) TempCanv[fl]->Print(out+out1.str().c_str()); | 
| 1289 |  | out1.str(""); | 
| 1290 |  | out1<<ffile<<"_FTrkQLook_EXPERT-EvNum-pag"<<fl+1<<"."<<outfile.Data(); | 
| 1291 |  | if(fl<cntpgdat) EventNumCanv[fl]->Print(out+out1.str().c_str()); | 
| 1292 |  | if(fl==totpg-1){ | 
| 1293 |  | out1.str(""); | 
| 1294 |  | out1<<ffile<<"_FTrkQLook_EXPERT-LandauL1."<<outfile.Data(); | 
| 1295 |  | LandauCanv1->Print(out+out1.str().c_str()); | 
| 1296 |  | out1.str(""); | 
| 1297 |  | out1<<ffile<<"_FTrkQLook_EXPERT-LandauL2."<<outfile.Data(); | 
| 1298 |  | LandauCanv2->Print(out+out1.str().c_str()); | 
| 1299 |  | out1.str(""); | 
| 1300 |  | out1<<ffile<<"_FTrkQLook_EXPERT-LandauL3."<<outfile.Data(); | 
| 1301 |  | LandauCanv3->Print(out+out1.str().c_str()); | 
| 1302 |  | out1.str(""); | 
| 1303 |  | out1<<ffile<<"_FTrkQLook_EXPERT-Lighting."<<outfile.Data(); | 
| 1304 |  | IlluminaCanv->Print(out+out1.str().c_str()); | 
| 1305 |  | } | 
| 1306 |  | } | 
| 1307 |  | } | 
| 1308 |  |  | 
| 1309 |  | // | 
| 1310 |  | // Convert ps to pdf if required | 
| 1311 |  | if(!strcmp(outfile.Data(),"pdf")){ | 
| 1312 |  | stringstream com; | 
| 1313 |  | com<<"ps2pdf13 "<<out<<ffile<<"_FTrkQLook_EXPERT.ps "<<out<<ffile<<"_FTrkQLook_EXPERT.pdf"; | 
| 1314 |  | system(com.str().c_str()); | 
| 1315 |  | printf("\n---> ps file converted in pdf format!\n"); | 
| 1316 |  | com.str(""); | 
| 1317 |  | com<<"rm -f "<<out<<ffile<<"_FTrkQLook_EXPERT.ps "; | 
| 1318 |  | system(com.str().c_str()); | 
| 1319 |  | printf("---> ps file removed!\n\n"); | 
| 1320 |  | com.str(""); | 
| 1321 | } | } | 
|  | else{ |  | 
|  | out1.str(""); |  | 
|  | out1<<ffile<<"_FTrkQLook_EXPERT-CompTime."<<outfile.Data(); |  | 
|  | CompTimeCanv->Print(out+out1.str().c_str()); |  | 
|  | out1.str(""); |  | 
|  | out1<<ffile<<"_FTrkQLook_EXPERT-Temp."<<outfile.Data(); |  | 
|  | TempCanv->Print(out+out1.str().c_str()); |  | 
|  | out1.str(""); |  | 
|  | out1<<ffile<<"_FTrkQLook_EXPERT-EvNum."<<outfile.Data(); |  | 
|  | EventNumCanv->Print(out+out1.str().c_str()); |  | 
|  | out1.str(""); |  | 
|  | out1<<ffile<<"_FTrkQLook_EXPERT-LandauL1."<<outfile.Data(); |  | 
|  | LandauCanv1->Print(out+out1.str().c_str()); |  | 
|  | out1.str(""); |  | 
|  | out1<<ffile<<"_FTrkQLook_EXPERT-LandauL2."<<outfile.Data(); |  | 
|  | LandauCanv2->Print(out+out1.str().c_str()); |  | 
|  | out1.str(""); |  | 
|  | out1<<ffile<<"_FTrkQLook_EXPERT-LandauL3."<<outfile.Data(); |  | 
|  | LandauCanv3->Print(out+out1.str().c_str()); |  | 
|  | out1.str(""); |  | 
|  | out1<<ffile<<"_FTrkQLook_EXPERT-Lighting."<<outfile.Data(); |  | 
|  | IlluminaCanv->Print(out+out1.str().c_str()); |  | 
|  | } |  | 
|  |  |  | 
|  | command.str(""); |  | 
|  | command<<"rm -f "<<out<<"warning.txt"; |  | 
|  | system(command.str().c_str()); |  | 
| 1322 |  |  | 
| 1323 | gROOT->Reset(); | gROOT->Reset(); | 
| 1324 | return; | return; |