diff --git a/OnlTools/Jevp/StJevpBuilders/fstBuilder.cxx b/OnlTools/Jevp/StJevpBuilders/fstBuilder.cxx index 7ec685200e2..eba0a55d244 100644 --- a/OnlTools/Jevp/StJevpBuilders/fstBuilder.cxx +++ b/OnlTools/Jevp/StJevpBuilders/fstBuilder.cxx @@ -1357,7 +1357,7 @@ void fstBuilder::event(daqReader *rdr) } PCP; - numTb = numTimeBin; //default: 9 timebins + numTb = numTb_default; //default: 9 timebins //LOG("JEFF", "numbTB=%d", numTimeBin); @@ -1401,6 +1401,12 @@ void fstBuilder::event(daqReader *rdr) } } } + //set plotting range for time bin distributions + hEventSumContents.hMaxTimeBin_ZS->GetXaxis()->SetRangeUser(tb_plot_low, tb_plot_high); + hEventSumContents.hMaxTimeBin->GetXaxis()->SetRangeUser(tb_plot_low, tb_plot_high); + for(int index = 0; index < mTbVsAdcHist; index++) hTbVsAdcContents.tbVsAdcArray[index]->GetXaxis()->SetRangeUser(tb_plot_low, tb_plot_high); + for(int index = 0; index < mMaxTimeBinHist; index++) hMaxTimeBinContents.maxTimeBinArray[index]->GetXaxis()->SetRangeUser(tb_plot_low, tb_plot_high); + for(int glbElecApvIdx = 0 ; glbElecApvIdx < totAPV ; glbElecApvIdx++) hMaxTimeBinContents_APV.maxTimeBinArray_APV[glbElecApvIdx]->GetXaxis()->SetRangeUser(tb_plot_low, tb_plot_high); PCP; @@ -2060,10 +2066,11 @@ void fstBuilder::stoprun(daqReader *rdr) } } - double entriesTB_123=0, entriesTB_all=0, fraction = 1.0; - if(hMaxTimeBinContents.maxTimeBinArray[j]->GetEntries()>0) { - entriesTB_123 = hMaxTimeBinContents.maxTimeBinArray[j]->Integral(2, numTb-1); - entriesTB_all = hMaxTimeBinContents.maxTimeBinArray[j]->Integral(1, numTb); + double entriesTB_123=0, entriesTB_all=0, fraction = 0.; + entriesTB_all = hMaxTimeBinContents.maxTimeBinArray[j]->Integral(1, numTb); + //if(hMaxTimeBinContents.maxTimeBinArray[j]->Integral(1, numTb)>0) { + if(entriesTB_all>0.) { + entriesTB_123 = hMaxTimeBinContents.maxTimeBinArray[j]->Integral(numTb/2+1, numTb/2+1); fraction = entriesTB_123/entriesTB_all; if(fractionGetEntries()>0){ - entriesTB_123 = hMaxTimeBinContents_APV.maxTimeBinArray_APV[glbElecApvIdx]->Integral(2, numTb-1); - entriesTB_all = hMaxTimeBinContents_APV.maxTimeBinArray_APV[glbElecApvIdx]->Integral(1, numTb); + double entriesTB_123=0, entriesTB_all=0, fraction = 0.; + entriesTB_all = hMaxTimeBinContents_APV.maxTimeBinArray_APV[glbElecApvIdx]->Integral(1, numTb); + //if(hMaxTimeBinContents_APV.maxTimeBinArray_APV[glbElecApvIdx]->GetEntries()>0){ + if(entriesTB_all>0.){ + entriesTB_123 = hMaxTimeBinContents_APV.maxTimeBinArray_APV[glbElecApvIdx]->Integral(numTb/2+1,numTb/2+1); fraction = entriesTB_123/entriesTB_all; } - hEventSumContents.hMaxTBfractionVsAPV_ZS->SetBinContent(glbElecApvIdx, fraction); + hEventSumContents.hMaxTBfractionVsAPV_ZS->SetBinContent(glbElecApvIdx+1, fraction); } } } diff --git a/OnlTools/Jevp/StJevpBuilders/fstBuilder.h b/OnlTools/Jevp/StJevpBuilders/fstBuilder.h index 38e778ca0bb..f6ccb3ff9f0 100644 --- a/OnlTools/Jevp/StJevpBuilders/fstBuilder.h +++ b/OnlTools/Jevp/StJevpBuilders/fstBuilder.h @@ -90,7 +90,6 @@ class fstBuilder : public JevpBuilder { static const int ApvNumOffset = 12; // APV RO number same as IST | used for APV number convertion static const int ApvRoPerPort = 12; // APV RO number same as IST static const int ApvRoPerArm = 24; // APV RO number same as IST - static const int numTimeBin = 9; // to be decided static const int goodChCut = 64; // to be decided static const int minPedVal = 200; // to be decided @@ -129,6 +128,10 @@ class fstBuilder : public JevpBuilder { static const float rStop[RstripPerMod]; static const float rDelta; + //Time Bin plots plot range + const float tb_plot_low = 0.; + const float tb_plot_high = 3.; + //FST mapping int fstGeomMapping[totCh]; //FST channel mapping (electronics ID to geometry ID transform) int fstElecMapping[totCh]; //FST channel mapping (geometry ID & electronics ID transform) @@ -137,7 +140,7 @@ class fstBuilder : public JevpBuilder { float fstPedestal[numTimeBin][totCh]; float fstRmsNoise[numTimeBin][totCh]; float fstRanNoise[numTimeBin][totCh]; - + //*** Histogram Declarations... union { TH2 *adcArray[1]; //ADC value of each module's channels (ADC value vs. channel index) @@ -960,7 +963,7 @@ class fstBuilder : public JevpBuilder { int sumHistogramsFilled; int numTb; - + const int numTb_default = 3; JLatex* errorMsg; ClassDef(fstBuilder, 1); diff --git a/OnlTools/Jevp/StJevpBuilders/fttBuilder.cxx b/OnlTools/Jevp/StJevpBuilders/fttBuilder.cxx index c34ced10c03..c9966fa537a 100644 --- a/OnlTools/Jevp/StJevpBuilders/fttBuilder.cxx +++ b/OnlTools/Jevp/StJevpBuilders/fttBuilder.cxx @@ -466,10 +466,12 @@ void fttBuilder::drawStrip( TH2 * h2, int row, int strip, VMMHardwareMap::Quadra int iy0 = ay->FindBin( y0 + row * rLength ); int iy1 = ay->FindBin( y0 + (row + 1) * rLength - 1 ); + /* Does nothing, intened to adjust indexes? if ( VMMHardwareMap::Quadrant::C == q || VMMHardwareMap::Quadrant::D == q ){ int iy0 = ay->FindBin( y0 + (row - 1) * rLength ); int iy1 = ay->FindBin( y0 + (row) * rLength - 1 ); } + */ const int ix0 = ax->FindBin( x0 + strip * sPitch ); const int ix1 = ax->FindBin( x0 + (strip) * sPitch ); floodFill( h2, ix0, iy0, ix1, iy1 ); diff --git a/OnlTools/Jevp/StJevpBuilders/mtdBuilder.cxx b/OnlTools/Jevp/StJevpBuilders/mtdBuilder.cxx index 30bdeaada5a..f1dd29311e3 100644 --- a/OnlTools/Jevp/StJevpBuilders/mtdBuilder.cxx +++ b/OnlTools/Jevp/StJevpBuilders/mtdBuilder.cxx @@ -675,7 +675,13 @@ void mtdBuilder::event(daqReader *rdr) { int err1 = (int)(contents.MTD_Error1->GetEntries()); int err2 = (int)(contents.MTD_Error2->GetEntries()); int err3 = (int)(contents.MTD_Error3->GetEntries()); - + bool is_ignore = true; + for(int bin=1; bin<=contents.MTD_Error3->GetNbinsX(); bin++) + { + if(contents.MTD_Error3->GetBinContent(bin)>2) + is_ignore = false; + } + //error1 label if(err1== 0) { sprintf(t, "No electronics errors in %d events",nev); @@ -703,6 +709,10 @@ void mtdBuilder::event(daqReader *rdr) { sprintf(t, "No read out errors in %d events",nev); MTD_Error3_label->SetTextColor(3); } + else if(is_ignore) { + sprintf(t, "%d read out errors in %d events. Ignore!",err3, nev); + MTD_Error3_label->SetTextColor(4); + } else { sprintf(t, "%d read out errors in %d events!",err3, nev); MTD_Error3_label->SetTextColor(2); diff --git a/OnlTools/Jevp/StJevpBuilders/tpcBuilder.cxx b/OnlTools/Jevp/StJevpBuilders/tpcBuilder.cxx index 70bb6fbec1c..8c395573f39 100644 --- a/OnlTools/Jevp/StJevpBuilders/tpcBuilder.cxx +++ b/OnlTools/Jevp/StJevpBuilders/tpcBuilder.cxx @@ -32,7 +32,11 @@ // Some summary plots do have the sums for itpc and tpx // Legends updated // -// +// March 24 +// Added histogramf #bytes read out for RDO's +// Added some histogram since in 23 the clusterfinder for very low signals in time ~8-10 +// it spills over into negative time bins which it should not. These are recorded in histogram +// that are showed in the charge steps plot. Occupancy is ~ 1:1o**3 for those low timebins #define checkcld 1 #define checklaser 1 @@ -94,9 +98,15 @@ void tpcBuilder::initialize(int argc, char *argv[]) { contents.itpc_pix_occ_laser = new TH1D("itpc_pix_occ_laser","iTPC Pixel Occupancy (in %) Lasers",100,0,1); contents.itpc_pix_occ_pulser = new TH1D("itpc_pix_occ_pulser","iTPC Pixel Occupancy (in %) Pulsers",100,0,10); - contents.tpc_pix_occ_physics = new TH1D("tpc_pic_occ_physics","TPC Pixel Occupancy (in %) Physics",100,0,2.5); - contents.tpc_pix_occ_laser = new TH1D("tpc_pic_occ_laser","TPC Pixel Occupancy (in %) Lasers",100,0,1); - contents.tpc_pix_occ_pulser = new TH1D("tpc_pic_occ_pulser","TPC Pixel Occupancy (in %) Pulsers",100,0,10); + contents.tpc_pix_occ_physics = new TH1D("tpc_pic_occ_physics","TPX Pixel Occupancy (in %) Physics",100,0,2.5); + contents.tpc_pix_occ_laser = new TH1D("tpc_pic_occ_laser","TPX Pixel Occupancy (in %) Lasers",100,0,1); + contents.tpc_pix_occ_pulser = new TH1D("tpc_pic_occ_pulser","TPX Pixel Occupancy (in %) Pulsers",100,0,10); + + contents.tpc_rdo_bytes = new TH1D("tpc_rdo_bytes","TPX Total bytes per RDO", + 24*6,0.5,144.5); + contents.itpc_rdo_bytes = new TH1D("itpc_rdo_bytes","iTPC Total bytes per RDO", + 24*4,0.5,96.5); + // Common for itpc and tpx // @@ -104,7 +114,7 @@ void tpcBuilder::initialize(int argc, char *argv[]) { contents.h_tpc_sec2 = new TH2D("h_tpc_sec2","TPC Sec. 2 charge per pad",Npads,0.5,Npads+0.5,Nrows,0.5,Nrows+0.5); contents.h_tpc_sec3 = new TH2D("h_tpc_sec3","TPC Sec. 3 charge per pad",Npads,0.5,Npads+0.5,Nrows,0.5,Nrows+0.5); contents.h_tpc_sec4 = new TH2D("h_tpc_sec4","TPC Sec. 4 charge per pad",Npads,0.5,Npads+0.5,Nrows,0.5,Nrows+0.5); - contents.h_tpc_sec5 = new TH2D("h_tpc_sec5","TPC Sec. 5 charge per pad",Npads,0.5,Npads+0.5,Nrows,0.5,Nrows+0.5); + contents.h_tpc_sec5 = new TH2D("h_tpc_sec5","TPc Sec. 5 charge per pad",Npads,0.5,Npads+0.5,Nrows,0.5,Nrows+0.5); contents.h_tpc_sec6 = new TH2D("h_tpc_sec6","TPC Sec. 6 charge per pad",Npads,0.5,Npads+0.5,Nrows,0.5,Nrows+0.5); contents.h_tpc_sec7 = new TH2D("h_tpc_sec7","TPC Sec. 7 charge per pad",Npads,0.5,Npads+0.5,Nrows,0.5,Nrows+0.5); contents.h_tpc_sec8 = new TH2D("h_tpc_sec8","TPC Sec. 8 charge per pad",Npads,0.5,Npads+0.5,Nrows,0.5,Nrows+0.5); @@ -204,29 +214,29 @@ void tpcBuilder::initialize(int argc, char *argv[]) { // tpx only // - contents.h_tpx_chargeStep_s1 = new TH1D("h_tpx_chargeStep_s1","TPC adc vs time sector#1",512,0,512); - contents.h_tpx_chargeStep_s2 = new TH1D("h_tpx_chargeStep_s2","TPC adc vs time sector#2",512,0,512); - contents.h_tpx_chargeStep_s3 = new TH1D("h_tpx_chargeStep_s3","TPC adc vs time sector#3",512,0,512); - contents.h_tpx_chargeStep_s4 = new TH1D("h_tpx_chargeStep_s4","TPC adc vs time sector#4",512,0,512); - contents.h_tpx_chargeStep_s5 = new TH1D("h_tpx_chargeStep_s5","TPC adc vs time sector#5",512,0,512); - contents.h_tpx_chargeStep_s6 = new TH1D("h_tpx_chargeStep_s6","TPC adc vs time sector#6",512,0,512); - contents.h_tpx_chargeStep_s7 = new TH1D("h_tpx_chargeStep_s7","TPC adc vs time sector#7",512,0,512); - contents.h_tpx_chargeStep_s8 = new TH1D("h_tpx_chargeStep_s8","TPC adc vs time sector#8",512,0,512); - contents.h_tpx_chargeStep_s9 = new TH1D("h_tpx_chargeStep_s9","TPC adc vs time sector#9",512,0,512); - contents.h_tpx_chargeStep_s10 = new TH1D("h_tpx_chargeStep_s10","TPC adc vs time sector#10",512,0,512); - contents.h_tpx_chargeStep_s11 = new TH1D("h_tpx_chargeStep_s11","TPC adc vs time sector#11",512,0,512); - contents.h_tpx_chargeStep_s12 = new TH1D("h_tpx_chargeStep_s12","TPC adc vs time sector#12",512,0,512); - contents.h_tpx_chargeStep_s13 = new TH1D("h_tpx_chargeStep_s13","TPC adc vs time sector#13",512,0,512); - contents.h_tpx_chargeStep_s14 = new TH1D("h_tpx_chargeStep_s14","TPC adc vs time sector#14",512,0,512); - contents.h_tpx_chargeStep_s15 = new TH1D("h_tpx_chargeStep_s15","TPC adc vs time sector#15",512,0,512); - contents.h_tpx_chargeStep_s16 = new TH1D("h_tpx_chargeStep_s16","TPC adc vs time sector#16",512,0,512); - contents.h_tpx_chargeStep_s17 = new TH1D("h_tpx_chargeStep_s17","TPC adc vs time sector#17",512,0,512); - contents.h_tpx_chargeStep_s18 = new TH1D("h_tpx_chargeStep_s18","TPC adc vs time sector#18",512,0,512); - contents.h_tpx_chargeStep_s19 = new TH1D("h_tpx_chargeStep_s19","TPC adc vs time sector#19",512,0,512); - contents.h_tpx_chargeStep_s20 = new TH1D("h_tpx_chargeStep_s20","TPC adc vs time sector#20",512,0,512); - contents.h_tpx_chargeStep_s21 = new TH1D("h_tpx_chargeStep_s21","TPC adc vs time sector#21",512,0,512); - contents.h_tpx_chargeStep_s22 = new TH1D("h_tpx_chargeStep_s22","TPC adc vs time sector#22",512,0,512); - contents.h_tpx_chargeStep_s23 = new TH1D("h_tpx_chargeStep_s23","TPC adc vs time sector#23",512,0,512); + contents.h_tpx_chargeStep_s1 = new TH1D("h_tpx_chargeStep_s1","TPX adc vs time sector#1",512,0,512); + contents.h_tpx_chargeStep_s2 = new TH1D("h_tpx_chargeStep_s2","TPX adc vs time sector#2",512,0,512); + contents.h_tpx_chargeStep_s3 = new TH1D("h_tpx_chargeStep_s3","TPX adc vs time sector#3",512,0,512); + contents.h_tpx_chargeStep_s4 = new TH1D("h_tpx_chargeStep_s4","TPX adc vs time sector#4",512,0,512); + contents.h_tpx_chargeStep_s5 = new TH1D("h_tpx_chargeStep_s5","TPX adc vs time sector#5",512,0,512); + contents.h_tpx_chargeStep_s6 = new TH1D("h_tpx_chargeStep_s6","TPX adc vs time sector#6",512,0,512); + contents.h_tpx_chargeStep_s7 = new TH1D("h_tpx_chargeStep_s7","TPX adc vs time sector#7",512,0,512); + contents.h_tpx_chargeStep_s8 = new TH1D("h_tpx_chargeStep_s8","TPX adc vs time sector#8",512,0,512); + contents.h_tpx_chargeStep_s9 = new TH1D("h_tpx_chargeStep_s9","TPX adc vs time sector#9",512,0,512); + contents.h_tpx_chargeStep_s10 = new TH1D("h_tpx_chargeStep_s10","TPX adc vs time sector#10",512,0,512); + contents.h_tpx_chargeStep_s11 = new TH1D("h_tpx_chargeStep_s11","TPX adc vs time sector#11",512,0,512); + contents.h_tpx_chargeStep_s12 = new TH1D("h_tpx_chargeStep_s12","TPX adc vs time sector#12",512,0,512); + contents.h_tpx_chargeStep_s13 = new TH1D("h_tpx_chargeStep_s13","TPX adc vs time sector#13",512,0,512); + contents.h_tpx_chargeStep_s14 = new TH1D("h_tpx_chargeStep_s14","TPX adc vs time sector#14",512,0,512); + contents.h_tpx_chargeStep_s15 = new TH1D("h_tpx_chargeStep_s15","TPX adc vs time sector#15",512,0,512); + contents.h_tpx_chargeStep_s16 = new TH1D("h_tpx_chargeStep_s16","TPX adc vs time sector#16",512,0,512); + contents.h_tpx_chargeStep_s17 = new TH1D("h_tpx_chargeStep_s17","TPX adc vs time sector#17",512,0,512); + contents.h_tpx_chargeStep_s18 = new TH1D("h_tpx_chargeStep_s18","TPX adc vs time sector#18",512,0,512); + contents.h_tpx_chargeStep_s19 = new TH1D("h_tpx_chargeStep_s19","TPX adc vs time sector#19",512,0,512); + contents.h_tpx_chargeStep_s20 = new TH1D("h_tpx_chargeStep_s20","TPX adc vs time sector#20",512,0,512); + contents.h_tpx_chargeStep_s21 = new TH1D("h_tpx_chargeStep_s21","TPX adc vs time sector#21",512,0,512); + contents.h_tpx_chargeStep_s22 = new TH1D("h_tpx_chargeStep_s22","TPX adc vs time sector#22",512,0,512); + contents.h_tpx_chargeStep_s23 = new TH1D("h_tpx_chargeStep_s23","TPX adc vs time sector#23",512,0,512); contents.h_tpx_chargeStep_s24 = new TH1D("h_tpx_chargeStep_s24","TPC adc vs time sector#24",512,0,512); //contents.h_tpc_drift_vel = new TH1D("h_tpc_drift_vel", "TPC Drift Velocity (cm/us)",400,5.4,5.8); @@ -239,28 +249,28 @@ void tpcBuilder::initialize(int argc, char *argv[]) { contents.cl_width_itpc_tb = new TH2D("cl_width_itpc_tb","iTPC clusterwidth (time)", 24,0.5,24.5, - 30,0.5,30.5); + 31,-0.5,30.5); contents.cl_width_itpc_tb->GetXaxis()->SetTitle("sector"); contents.cl_width_itpc_pad = new TH2D("cl_width_itpc_pad","iTPC clusterwidth (pad)", 24,0.5,24.5, - 30,0.5,30.5); + 21,-0.5,20.5); contents.cl_width_itpc_pad->GetXaxis()->SetTitle("sector"); contents.cl_width_tpx_tb = new TH2D("cl_width_tpx_tb","TPX clusterwidth (time)", 24,0.5,24.5, - 30,0.5,30.5); + 31,-0.5,30.5); contents.cl_width_tpx_tb->GetXaxis()->SetTitle("sector"); contents.cl_width_tpx_pad = new TH2D("cl_width_tpx_pad","TPX clusterwidth (pad)", 24,0.5,24.5, - 30,0.5,30.5); + 21,-0.5,20.5); contents.cl_width_tpx_pad->GetXaxis()->SetTitle("sector"); contents.no_clust_tpx = new TH2F("no_clust_tpx","TPX #clusters vs sector", - 24,0.5,24.5,80,0,8); + 24,0.5,24.5,60,0,6); contents.no_clust_tpx->GetXaxis()->SetTitle("sector"); contents.no_clust_tpx->GetYaxis()->SetTitle("log10(no clusters)"); contents.no_clust_itpc = new TH2F("no_clust_itpc","iTPC #clusters vs sector", - 24,0.5,24.5,80,0,8); + 24,0.5,24.5,60,0,6); contents.no_clust_itpc->GetXaxis()->SetTitle("sector"); contents.no_clust_itpc->GetYaxis()->SetTitle("log10(no clusters)"); @@ -275,8 +285,6 @@ void tpcBuilder::initialize(int argc, char *argv[]) { extras.tpc_clpix_occ_pulser = new TH1D("tpc_clpix_occ_pulser","TPC Pixel Occupancy (in %) Pulsers",100,0,10); - - extras.cl_itpc_chargeStep_s1 = new TH1D("cl_itpc_chargeStep_s1","iTPC adc vs time sector#1",512,0,512); extras.cl_itpc_chargeStep_s2 = new TH1D("cl_itpc_chargeStep_s2","iTPC adc vs time sector#2",512,0,512); extras.cl_itpc_chargeStep_s3 = new TH1D("cl_itpc_chargeStep_s3","iTPC adc vs time sector#3",512,0,512); @@ -302,30 +310,84 @@ void tpcBuilder::initialize(int argc, char *argv[]) { extras.cl_itpc_chargeStep_s23 = new TH1D("cl_itpc_chargeStep_s23","iTPC adc vs time sector#23",512,0,512); extras.cl_itpc_chargeStep_s24 = new TH1D("cl_itpc_chargeStep_s24","iTPC adc vs time sector#24",512,0,512); - extras.cl_tpx_chargeStep_s1 = new TH1D("cl_tpx_chargeStep_s1","iTPC adc vs time sector#1",512,0,512); - extras.cl_tpx_chargeStep_s2 = new TH1D("cl_tpx_chargeStep_s2","iTPC adc vs time sector#2",512,0,512); - extras.cl_tpx_chargeStep_s3 = new TH1D("cl_tpx_chargeStep_s3","iTPC adc vs time sector#3",512,0,512); - extras.cl_tpx_chargeStep_s4 = new TH1D("cl_tpx_chargeStep_s4","iTPC adc vs time sector#4",512,0,512); - extras.cl_tpx_chargeStep_s5 = new TH1D("cl_tpx_chargeStep_s5","iTPC adc vs time sector#5",512,0,512); - extras.cl_tpx_chargeStep_s6 = new TH1D("cl_tpx_chargeStep_s6","iTPC adc vs time sector#6",512,0,512); - extras.cl_tpx_chargeStep_s7 = new TH1D("cl_tpx_chargeStep_s7","iTPC adc vs time sector#7",512,0,512); - extras.cl_tpx_chargeStep_s8 = new TH1D("cl_tpx_chargeStep_s8","iTPC adc vs time sector#8",512,0,512); - extras.cl_tpx_chargeStep_s9 = new TH1D("cl_tpx_chargeStep_s9","iTPC adc vs time sector#9",512,0,512); - extras.cl_tpx_chargeStep_s10 = new TH1D("cl_tpx_chargeStep_s10","iTPC adc vs time sector#10",512,0,512); - extras.cl_tpx_chargeStep_s11 = new TH1D("cl_tpx_chargeStep_s11","iTPC adc vs time sector#11",512,0,512); - extras.cl_tpx_chargeStep_s12 = new TH1D("cl_tpx_chargeStep_s12","iTPC adc vs time sector#12",512,0,512); - extras.cl_tpx_chargeStep_s13 = new TH1D("cl_tpx_chargeStep_s13","iTPC adc vs time sector#13",512,0,512); - extras.cl_tpx_chargeStep_s14 = new TH1D("cl_tpx_chargeStep_s14","iTPC adc vs time sector#14",512,0,512); - extras.cl_tpx_chargeStep_s15 = new TH1D("cl_tpx_chargeStep_s15","iTPC adc vs time sector#15",512,0,512); - extras.cl_tpx_chargeStep_s16 = new TH1D("cl_tpx_chargeStep_s16","iTPC adc vs time sector#16",512,0,512); - extras.cl_tpx_chargeStep_s17 = new TH1D("cl_tpx_chargeStep_s17","iTPC adc vs time sector#17",512,0,512); - extras.cl_tpx_chargeStep_s18 = new TH1D("cl_tpx_chargeStep_s18","iTPC adc vs time sector#18",512,0,512); - extras.cl_tpx_chargeStep_s19 = new TH1D("cl_tpx_chargeStep_s19","iTPC adc vs time sector#19",512,0,512); - extras.cl_tpx_chargeStep_s20 = new TH1D("cl_tpx_chargeStep_s20","iTPC adc vs time sector#20",512,0,512); - extras.cl_tpx_chargeStep_s21 = new TH1D("cl_tpx_chargeStep_s21","iTPC adc vs time sector#21",512,0,512); - extras.cl_tpx_chargeStep_s22 = new TH1D("cl_tpx_chargeStep_s22","iTPC adc vs time sector#22",512,0,512); - extras.cl_tpx_chargeStep_s23 = new TH1D("cl_tpx_chargeStep_s23","iTPC adc vs time sector#23",512,0,512); - extras.cl_tpx_chargeStep_s24 = new TH1D("cl_tpx_chargeStep_s24","iTPC adc vs time sector#24",512,0,512); +#if 1 + + extras.bad_cl_itpc_chargeStep_s1 = new TH1D("bad_cl_itpc_chargeStep_s1","iTPC adc vs time sector#1",512,0,512); + extras.bad_cl_itpc_chargeStep_s2 = new TH1D("bad_cl_itpc_chargeStep_s2","iTPC adc vs time sector#2",512,0,512); + extras.bad_cl_itpc_chargeStep_s3 = new TH1D("bad_cl_itpc_chargeStep_s3","iTPC adc vs time sector#3",512,0,512); + extras.bad_cl_itpc_chargeStep_s4 = new TH1D("bad_cl_itpc_chargeStep_s4","iTPC adc vs time sector#4",512,0,512); + extras.bad_cl_itpc_chargeStep_s5 = new TH1D("bad_cl_itpc_chargeStep_s5","iTPC adc vs time sector#5",512,0,512); + extras.bad_cl_itpc_chargeStep_s6 = new TH1D("bad_cl_itpc_chargeStep_s6","iTPC adc vs time sector#6",512,0,512); + extras.bad_cl_itpc_chargeStep_s7 = new TH1D("bad_cl_itpc_chargeStep_s7","iTPC adc vs time sector#7",512,0,512); + extras.bad_cl_itpc_chargeStep_s8 = new TH1D("bad_cl_itpc_chargeStep_s8","iTPC adc vs time sector#8",512,0,512); + extras.bad_cl_itpc_chargeStep_s9 = new TH1D("bad_cl_itpc_chargeStep_s9","iTPC adc vs time sector#9",512,0,512); + extras.bad_cl_itpc_chargeStep_s10 = new TH1D("bad_cl_itpc_chargeStep_s10","iTPC adc vs time sector#10",512,0,512); + extras.bad_cl_itpc_chargeStep_s11 = new TH1D("bad_cl_itpc_chargeStep_s11","iTPC adc vs time sector#11",512,0,512); + extras.bad_cl_itpc_chargeStep_s12 = new TH1D("bad_cl_itpc_chargeStep_s12","iTPC adc vs time sector#12",512,0,512); + extras.bad_cl_itpc_chargeStep_s13 = new TH1D("bad_cl_itpc_chargeStep_s13","iTPC adc vs time sector#13",512,0,512); + extras.bad_cl_itpc_chargeStep_s14 = new TH1D("bad_cl_itpc_chargeStep_s14","iTPC adc vs time sector#14",512,0,512); + extras.bad_cl_itpc_chargeStep_s15 = new TH1D("bad_cl_itpc_chargeStep_s15","iTPC adc vs time sector#15",512,0,512); + extras.bad_cl_itpc_chargeStep_s16 = new TH1D("bad_cl_itpc_chargeStep_s16","iTPC adc vs time sector#16",512,0,512); + extras.bad_cl_itpc_chargeStep_s17 = new TH1D("bad_cl_itpc_chargeStep_s17","iTPC adc vs time sector#17",512,0,512); + extras.bad_cl_itpc_chargeStep_s18 = new TH1D("bad_cl_itpc_chargeStep_s18","iTPC adc vs time sector#18",512,0,512); + extras.bad_cl_itpc_chargeStep_s19 = new TH1D("bad_cl_itpc_chargeStep_s19","iTPC adc vs time sector#19",512,0,512); + extras.bad_cl_itpc_chargeStep_s20 = new TH1D("bad_cl_itpc_chargeStep_s20","iTPC adc vs time sector#20",512,0,512); + extras.bad_cl_itpc_chargeStep_s21 = new TH1D("bad_cl_itpc_chargeStep_s21","iTPC adc vs time sector#21",512,0,512); + extras.bad_cl_itpc_chargeStep_s22 = new TH1D("bad_cl_itpc_chargeStep_s22","iTPC adc vs time sector#22",512,0,512); + extras.bad_cl_itpc_chargeStep_s23 = new TH1D("bad_cl_itpc_chargeStep_s23","iTPC adc vs time sector#23",512,0,512); + extras.bad_cl_itpc_chargeStep_s24 = new TH1D("bad_cl_itpc_chargeStep_s24","iTPC adc vs time sector#24",512,0,512); + + extras.bad_cl_tpx_chargeStep_s1 = new TH1D("bad_cl_tpx_chargeStep_s1","TPX adc vs time sector#1",512,0,512); + extras.bad_cl_tpx_chargeStep_s2 = new TH1D("bad_cl_tpx_chargeStep_s2","TPX adc vs time sector#2",512,0,512); + extras.bad_cl_tpx_chargeStep_s3 = new TH1D("bad_cl_tpx_chargeStep_s3","TPX adc vs time sector#3",512,0,512); + extras.bad_cl_tpx_chargeStep_s4 = new TH1D("bad_cl_tpx_chargeStep_s4","TPX adc vs time sector#4",512,0,512); + extras.bad_cl_tpx_chargeStep_s5 = new TH1D("bad_cl_tpx_chargeStep_s5","TPX adc vs time sector#5",512,0,512); + extras.bad_cl_tpx_chargeStep_s6 = new TH1D("bad_cl_tpx_chargeStep_s6","TPX adc vs time sector#6",512,0,512); + extras.bad_cl_tpx_chargeStep_s7 = new TH1D("bad_cl_tpx_chargeStep_s7","TPX adc vs time sector#7",512,0,512); + extras.bad_cl_tpx_chargeStep_s8 = new TH1D("bad_cl_tpx_chargeStep_s8","TPX adc vs time sector#8",512,0,512); + extras.bad_cl_tpx_chargeStep_s9 = new TH1D("bad_cl_tpx_chargeStep_s9","TPX adc vs time sector#9",512,0,512); + extras.bad_cl_tpx_chargeStep_s10 = new TH1D("bad_cl_tpx_chargeStep_s10","TPX adc vs time sector#10",512,0,512); + extras.bad_cl_tpx_chargeStep_s11 = new TH1D("bad_cl_tpx_chargeStep_s11","TPX adc vs time sector#11",512,0,512); + extras.bad_cl_tpx_chargeStep_s12 = new TH1D("bad_cl_tpx_chargeStep_s12","TPX adc vs time sector#12",512,0,512); + extras.bad_cl_tpx_chargeStep_s13 = new TH1D("bad_cl_tpx_chargeStep_s13","TPX adc vs time sector#13",512,0,512); + extras.bad_cl_tpx_chargeStep_s14 = new TH1D("bad_cl_tpx_chargeStep_s14","TPX adc vs time sector#14",512,0,512); + extras.bad_cl_tpx_chargeStep_s15 = new TH1D("bad_cl_tpx_chargeStep_s15","TPX adc vs time sector#15",512,0,512); + extras.bad_cl_tpx_chargeStep_s16 = new TH1D("bad_cl_tpx_chargeStep_s16","TPX adc vs time sector#16",512,0,512); + extras.bad_cl_tpx_chargeStep_s17 = new TH1D("bad_cl_tpx_chargeStep_s17","TPX adc vs time sector#17",512,0,512); + extras.bad_cl_tpx_chargeStep_s18 = new TH1D("bad_cl_tpx_chargeStep_s18","TPX adc vs time sector#18",512,0,512); + extras.bad_cl_tpx_chargeStep_s19 = new TH1D("bad_cl_tpx_chargeStep_s19","TPX adc vs time sector#19",512,0,512); + extras.bad_cl_tpx_chargeStep_s20 = new TH1D("bad_cl_tpx_chargeStep_s20","TPX adc vs time sector#20",512,0,512); + extras.bad_cl_tpx_chargeStep_s21 = new TH1D("bad_cl_tpx_chargeStep_s21","TPX adc vs time sector#21",512,0,512); + extras.bad_cl_tpx_chargeStep_s22 = new TH1D("bad_cl_tpx_chargeStep_s22","TPX adc vs time sector#22",512,0,512); + extras.bad_cl_tpx_chargeStep_s23 = new TH1D("bad_cl_tpx_chargeStep_s23","TPX adc vs time sector#23",512,0,512); + extras.bad_cl_tpx_chargeStep_s24 = new TH1D("bad_cl_tpx_chargeStep_s24","TPX adc vs time sector#24",512,0,512); + +#endif + + extras.cl_tpx_chargeStep_s1 = new TH1D("cl_tpx_chargeStep_s1","TPX adc vs time sector#1",512,0,512); + extras.cl_tpx_chargeStep_s2 = new TH1D("cl_tpx_chargeStep_s2","TPX adc vs time sector#2",512,0,512); + extras.cl_tpx_chargeStep_s3 = new TH1D("cl_tpx_chargeStep_s3","TPX adc vs time sector#3",512,0,512); + extras.cl_tpx_chargeStep_s4 = new TH1D("cl_tpx_chargeStep_s4","TPX adc vs time sector#4",512,0,512); + extras.cl_tpx_chargeStep_s5 = new TH1D("cl_tpx_chargeStep_s5","TPX adc vs time sector#5",512,0,512); + extras.cl_tpx_chargeStep_s6 = new TH1D("cl_tpx_chargeStep_s6","TPX adc vs time sector#6",512,0,512); + extras.cl_tpx_chargeStep_s7 = new TH1D("cl_tpx_chargeStep_s7","TPX adc vs time sector#7",512,0,512); + extras.cl_tpx_chargeStep_s8 = new TH1D("cl_tpx_chargeStep_s8","TPX adc vs time sector#8",512,0,512); + extras.cl_tpx_chargeStep_s9 = new TH1D("cl_tpx_chargeStep_s9","TPX adc vs time sector#9",512,0,512); + extras.cl_tpx_chargeStep_s10 = new TH1D("cl_tpx_chargeStep_s10","TPX adc vs time sector#10",512,0,512); + extras.cl_tpx_chargeStep_s11 = new TH1D("cl_tpx_chargeStep_s11","TPX adc vs time sector#11",512,0,512); + extras.cl_tpx_chargeStep_s12 = new TH1D("cl_tpx_chargeStep_s12","TPX adc vs time sector#12",512,0,512); + extras.cl_tpx_chargeStep_s13 = new TH1D("cl_tpx_chargeStep_s13","TPX adc vs time sector#13",512,0,512); + extras.cl_tpx_chargeStep_s14 = new TH1D("cl_tpx_chargeStep_s14","TPX adc vs time sector#14",512,0,512); + extras.cl_tpx_chargeStep_s15 = new TH1D("cl_tpx_chargeStep_s15","TPX adc vs time sector#15",512,0,512); + extras.cl_tpx_chargeStep_s16 = new TH1D("cl_tpx_chargeStep_s16","TPX adc vs time sector#16",512,0,512); + extras.cl_tpx_chargeStep_s17 = new TH1D("cl_tpx_chargeStep_s17","TPX adc vs time sector#17",512,0,512); + extras.cl_tpx_chargeStep_s18 = new TH1D("cl_tpx_chargeStep_s18","TPX adc vs time sector#18",512,0,512); + extras.cl_tpx_chargeStep_s19 = new TH1D("cl_tpx_chargeStep_s19","TPX adc vs time sector#19",512,0,512); + extras.cl_tpx_chargeStep_s20 = new TH1D("cl_tpx_chargeStep_s20","TPX adc vs time sector#20",512,0,512); + extras.cl_tpx_chargeStep_s21 = new TH1D("cl_tpx_chargeStep_s21","TPX adc vs time sector#21",512,0,512); + extras.cl_tpx_chargeStep_s22 = new TH1D("cl_tpx_chargeStep_s22","TPX adc vs time sector#22",512,0,512); + extras.cl_tpx_chargeStep_s23 = new TH1D("cl_tpx_chargeStep_s23","TPX adc vs time sector#23",512,0,512); + extras.cl_tpx_chargeStep_s24 = new TH1D("cl_tpx_chargeStep_s24","TPX adc vs time sector#24",512,0,512); extras.cl_itpc_phi_charge = new TH1D("cl_itpc_phi_charge","Azimuthal Distribution of iTPC Charge",360,-180,180); extras.cl_itpc_sector_charge = new TH1D("cl_itpc_sector_charge","iTPC Charge per Sector",24,0.5,24.5); @@ -405,6 +467,16 @@ void tpcBuilder::initialize(int argc, char *argv[]) { plots[++n] = new JevpPlot(extras.clusters_per_bx); plots[n]->optstat = 0; + // + // Add the rdo bytes plots + // + plots[++n] = new JevpPlot(contents.tpc_rdo_bytes); + plots[n]->optstat=0; + plots[++n] = new JevpPlot(contents.itpc_rdo_bytes); + plots[n]->optstat=0; + + // plots for each sector + // int pl_q_idx = n+1; plots[++n] = new JevpPlot(contents.h_tpc_sec1); @@ -487,110 +559,167 @@ void tpcBuilder::initialize(int argc, char *argv[]) { // these plots should likely all be logy // - +#if fvd + cout << "Add charge steps " << endl; +#endif int pl_qs_idx = n+1; plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s1); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s1); + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_itpc_chargeStep_s1); + plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s1); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s2); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s2); + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_itpc_chargeStep_s2); + plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s2); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s3); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s3); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s3); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s4); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s4); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s4); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s5); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s5); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s5); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s6); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s6); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s6); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s7); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s7); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s7); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s8); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s8); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s8); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s9); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s9); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s9); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s10); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s10); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s10); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s11); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s11); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s11); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s12); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s12); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s12); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s13); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s13); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s13); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s14); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s14); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s14); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s15); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s15); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s15); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s16); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s16); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s16); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s17); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s17); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s17); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s18); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s18); + plots[n]->addHisto(extras.cl_itpc_chargeStep_s18); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s18); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s19); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s19); + plots[n]->logy = 1; plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s19); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s20); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s20); - // plots[n]->logy = 1; plots[n]->logy = 1; + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_itpc_chargeStep_s20); + plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s20); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s21); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s21); + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_itpc_chargeStep_s21); + plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s21); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s22); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s22); + plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s22); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s23); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s23); + plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s23); plots[++n] = new JevpPlot(contents.h_itpc_chargeStep_s24); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_itpc_chargeStep_s24); + plots[n]->addHisto(extras.bad_cl_itpc_chargeStep_s24); + cout << "creating tpx charge steps " << endl; int pl_qs_idx_tpx = n+1; plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s1); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s1); + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_tpx_chargeStep_s1); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s1); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s2); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s2); + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_tpx_chargeStep_s2); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s2); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s3); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s3); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s3); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s4); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s4); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s4); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s5); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s5); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s5); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s6); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s6); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s6); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s7); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s7); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s7); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s8); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s8); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s8); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s9); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s9); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s9); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s10); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s10); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s10); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s11); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s11); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s11); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s12); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s12); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s12); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s13); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s13); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s13); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s14); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s14); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s14); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s15); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s15); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s15); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s16); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s16); + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_tpx_chargeStep_s16); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s17); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s17); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s17); + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_tpx_chargeStep_s17); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s17); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s18); - plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s18); + plots[n]->logy = 1; + plots[n]->addHisto(extras.cl_tpx_chargeStep_s18); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s18); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s19); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s19); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s19); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s20); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s20); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s20); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s21); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s21); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s21); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s22); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s22); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s22); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s23); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s23); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s23); plots[++n] = new JevpPlot(contents.h_tpx_chargeStep_s24); plots[n]->logy = 1; plots[n]->addHisto(extras.cl_tpx_chargeStep_s24); + plots[n]->addHisto(extras.bad_cl_tpx_chargeStep_s24); - //plots[++n] = new JevpPlot(contents.h_tpc_drift_vel); - plots[++n] = new JevpPlot(contents.h_itpc_phi_charge); plots[n]->addHisto(extras.cl_itpc_phi_charge); plots[n]->optstat = 0; @@ -651,16 +780,20 @@ void tpcBuilder::initialize(int argc, char *argv[]) { plots[++n] = new JevpPlot(contents.no_clust_itpc); plots[n]->setOptStat(0); - // - // indices for blocks into the plots[] list + // indices for blocks into the contents and extras offsets + // the plot_ offsets are updated during adding plots + // // // long q_idx = ((long)&contents.h_tpc_sec1 - (long)contents.array) / (sizeof(TH1 *)); long qs_idx = ((long)&contents.h_itpc_chargeStep_s1 - (long)contents.array) / (sizeof(TH1 *)); //long qe_idx = ((long)&contents.e_tpc_sec1 - (long)contents.array) / (sizeof(TH1 *)); long cl_qs_idx = ((long)&extras.cl_itpc_chargeStep_s1 - (long)extras.array) / (sizeof(TH1 *)); + long bad_cl_qs_idx = ((long)&extras.bad_cl_itpc_chargeStep_s1 - (long)extras.array) / (sizeof(TH1 *)); + long qs_idx_tpx = ((long)&contents.h_tpx_chargeStep_s1 - (long)contents.array) / (sizeof(TH1 *)); long cl_qs_idx_tpx = ((long)&extras.cl_tpx_chargeStep_s1 - (long)extras.array) / (sizeof(TH1 *)); + long bad_cl_qs_idx_tpx = ((long)&extras.bad_cl_tpx_chargeStep_s1 - (long)extras.array) / (sizeof(TH1 *)); // The indices should only be used to address offsets into the contents or the extras TH1 arrays // They should not be used for plots[..] which may or may not correspond to the offset into @@ -677,20 +810,26 @@ void tpcBuilder::initialize(int argc, char *argv[]) { plots[i+pl_qs_idx]->setLegend(.7,.8,.95,.95); plots[i+pl_qs_idx]->getHisto(0)->setLegText("adc's"); plots[i+pl_qs_idx]->getHisto(1)->setLegText("clusters"); + plots[i+pl_qs_idx]->getHisto(2)->setLegText("bad clds"); plots[i+pl_qs_idx]->getHisto(0)->setLegArgs("l"); plots[i+pl_qs_idx]->getHisto(1)->setLegArgs("l"); + plots[i+pl_qs_idx]->getHisto(2)->setLegArgs("l"); plots[i+pl_qs_idx_tpx]->optstat = 0; plots[i+pl_qs_idx_tpx]->setLegend(.7,.8,.95,.95); plots[i+pl_qs_idx_tpx]->getHisto(0)->setLegText("adc's"); plots[i+pl_qs_idx_tpx]->getHisto(1)->setLegText("clusters"); + plots[i+pl_qs_idx_tpx]->getHisto(2)->setLegText("bad clds"); plots[i+pl_qs_idx_tpx]->getHisto(0)->setLegArgs("l"); plots[i+pl_qs_idx_tpx]->getHisto(1)->setLegArgs("l"); + plots[i+pl_qs_idx_tpx]->getHisto(2)->setLegArgs("l"); contents.array[i+qs_idx]->SetLineColor(kGreen); extras.array[i+cl_qs_idx]->SetLineColor(kRed); + extras.array[i+bad_cl_qs_idx]->SetLineColor(kBlue); contents.array[i+qs_idx_tpx]->SetLineColor(kGreen); extras.array[i+cl_qs_idx_tpx]->SetLineColor(kRed); + extras.array[i+bad_cl_qs_idx_tpx]->SetLineColor(kBlue); } // Add Plots to plot set... @@ -719,8 +858,9 @@ void tpcBuilder::startrun(daqReader *rdr) { void tpcBuilder::event(daqReader *rdr) { - int has_adc=0; + int has_cld=0; + int has_adc=0; int bunch7bit=0; // Get bunch crossing from trigger data.. @@ -736,8 +876,10 @@ void tpcBuilder::event(daqReader *rdr) long qe_idx = ((long)&contents.e_tpc_sec1 - (long)contents.array) / (sizeof(TH1 *)); long qs_idx = ((long)&contents.h_itpc_chargeStep_s1 - (long)contents.array) / (sizeof(TH1 *)); long cl_qs_idx = ((long)&extras.cl_itpc_chargeStep_s1 - (long)extras.array) / (sizeof(TH1 *)); + long bad_cl_qs_idx = ((long)&extras.bad_cl_itpc_chargeStep_s1 - (long)extras.array) / (sizeof(TH1 *)); long qs_idx_tpx = ((long)&contents.h_tpx_chargeStep_s1 - (long)contents.array) / (sizeof(TH1 *)); long cl_qs_idx_tpx = ((long)&extras.cl_tpx_chargeStep_s1 - (long)extras.array) / (sizeof(TH1 *)); + long bad_cl_qs_idx_tpx = ((long)&extras.bad_cl_tpx_chargeStep_s1 - (long)extras.array) / (sizeof(TH1 *)); @@ -755,6 +897,7 @@ void tpcBuilder::event(daqReader *rdr) double itpc_pix_count_cl = 0; double pixel_count = 0; double itpc_pixel_count=0; + double total_cluster =0; event_no++; // // reset event cluster plots @@ -768,44 +911,60 @@ void tpcBuilder::event(daqReader *rdr) double tb_charge_counts[512]; double charge_counts_cl[Npads1][Nrows1]; double tb_charge_counts_cl[512]; + double tb_bad_charge_counts_cl[512]; + // + // Loop over sectors + // step1 itpc adc + // step2 tpx adc + // 3 cld itpc + // 4 itpc cld for(int s=1;s<=24;s++) { + daq_dta *ddr = rdr->det("tpx")->get("raw",s); + while(ddr&&ddr->iterate()){ + // cout << "sector " << s << " rdo " << ddr->rdo << " " << ddr->ncontent << endl; + contents.tpc_rdo_bytes->Fill((s-1)*6+ddr->rdo, ddr->ncontent); + } + + daq_dta *ddi = rdr->det("itpc")->get("raw",s); + while(ddi&&ddi->iterate()){ + // cout << "sector " << s << " rdo " << ddi->rdo << " " << ddi->ncontent << endl; + contents.itpc_rdo_bytes->Fill((s-1)*4+ddi->rdo, ddi->ncontent); + } + #if fvd daq_dta *dda = rdr->det("tpx")->get("adc",s) ; cout << "tpx adc " << dda << endl; daq_dta *ddb = rdr->det("itpc")->get("adc",s) ; cout << "itpc adc " << ddb << endl; #endif - - + + double charge_count_sector = 0; memset(channel_counts, 0, sizeof(channel_counts)); memset(charge_counts, 0, sizeof(charge_counts)); memset(tb_charge_counts, 0, sizeof(tb_charge_counts)); memset(tb_charge_counts_cl, 0, sizeof(tb_charge_counts_cl)); - + // // get itpc data // daq_dta *dd = rdr->det("itpc")->get("adc",s) ; -#if fvd - cout << "itpc adc" << endl; -#endif if(dd) { if(tpcDataInThisRun==0) addServerTags("tpc"); tpcDataInThisRun = 1; - + // regular data... Note its always there even if empty // e.g. for Run 18 data there are data banks for all sectors? // has_adc = 1; tpc_max_channels += tpc_max_channels_inner_sector; itpc_max_channels += tpc_max_channels_inner_sector; - + while(dd->iterate()) { if (dd->ncontent == 0) continue; // skip padrow _tb0 @@ -816,14 +975,14 @@ void tpcBuilder::event(daqReader *rdr) { continue; } - - + + pixel_count += dd->ncontent ; itpc_pixel_count += dd->ncontent ; if(dd->ncontent > 0) { channel_counts[dd->pad][dd->row] = 1; } - + for(u_int i=0;incontent;i++) { int tb = dd->adc[i].tb; int adc = dd->adc[i].adc; @@ -836,52 +995,34 @@ void tpcBuilder::event(daqReader *rdr) // this cut was used in run18 due to partial lack of pedetsal sub.. // remove timebins where GG osc is important. if(tb>32 && tb<430) { - - /* - // this pad is sometimes hot mask out - // - if(s==10){ - if(dd->pad==66 && dd->row==37) - continue; - } - - if(s==12){ - if(dd->pad==41 && dd->row==26) - continue; - } - - if(s==14){ - if(dd->pad==41 && dd->row==38) - continue; - } - */ + charge_counts[dd->pad][dd->row] += adc; } tb_charge_counts[tb] += adc; } } } // end iterate - + for(int i=1;i 0 ) { contents.h_itpc_phi_charge->Fill(mPhiAngleMap[s-1][j-1][i-1],charge_counts[i][j]); ((TH2D *)contents.array[s + q_idx - 1])->Fill(i, j, charge_counts[i][j]); } } } // end i,j - + for(int i=0;i<512;i++) { contents.array[s + qs_idx - 1]->Fill(i,tb_charge_counts[i]); } contents.h_itpc_sector_charge->Fill(s, charge_count_sector); - + } //end if(dd) - + // // tpx data // @@ -889,9 +1030,6 @@ void tpcBuilder::event(daqReader *rdr) charge_count_sector = 0.0; dd = rdr->det("tpx")->get("adc",s) ; -#if fvd - cout << "tpx " << dd << endl; -#endif if(dd) { // regular data... if(tpcDataInThisRun==0) addServerTags("tpc"); tpcDataInThisRun = 1; @@ -900,12 +1038,6 @@ void tpcBuilder::event(daqReader *rdr) tpc_max_channels += tpc_max_channels_outer_sector; while(dd->iterate()){ -#if fvd - cout << "Sector " << s << " " << dd->ncontent << endl; -#endif -#if fvd - cout << " " << dd->pad << " " << dd->row << endl; -#endif // // skip rows < 14 ! should not appear in run 19 data // @@ -935,37 +1067,14 @@ void tpcBuilder::event(daqReader *rdr) LOG(ERR, "event=%d pad=%d row=%d tb=%d out of range. Ignore.", event_no, dd->pad, dd->row, tb); } else { -#if fvd - cout << dd->pad << " " << dd->row << " " << tb << " " << adc < 24){ - if(s==4) - if(dd->row+27 == 72 && dd->pad==110){ - continue; - } - if(s==12){ - if(dd->pad==19 && dd->row+27==43) - continue; - - } - - if(s==22){ - if(dd->pad==71 && dd->row+27==56) - continue; - - - } - charge_counts[dd->pad][dd->row+27] += adc; - } - tb_charge_counts[tb] += adc; + charge_counts[dd->pad][dd->row+27] += adc; } - + tb_charge_counts[tb] += adc; } + } + // // All data have been looked at // @@ -989,7 +1098,7 @@ void tpcBuilder::event(daqReader *rdr) } contents.h_tpx_sector_charge->Fill(s,charge_count_sector); } // end dd - + // // go to clusters // @@ -998,6 +1107,7 @@ void tpcBuilder::event(daqReader *rdr) double charge_cl=0; memset(charge_counts_cl, 0, sizeof(charge_counts_cl)); memset(tb_charge_counts_cl, 0, sizeof(tb_charge_counts_cl)); + memset(tb_bad_charge_counts_cl, 0, sizeof(tb_bad_charge_counts_cl)); // // Itpc data @@ -1017,24 +1127,37 @@ void tpcBuilder::event(daqReader *rdr) for(u_int i=0;incontent;i++) { noClustiTPC++; if((dd->cld[i].flags==0) || (dd->cld[i].flags==2)) { - pix_count_cl += (dd->cld[i].t2 - dd->cld[i].t1)*(dd->cld[i].p2 - dd->cld[i].p1); - itpc_pix_count_cl += (dd->cld[i].t2 - dd->cld[i].t1)*(dd->cld[i].p2 - dd->cld[i].p1); - itpc_pix_count_cl += (dd->cld[i].t2 - dd->cld[i].t1)*(dd->cld[i].p2 - dd->cld[i].p1); + if((dd->cld[i].t2 - dd->cld[i].t1)*(dd->cld[i].p2 - dd->cld[i].p1) <0) { +#if fvd + cout << "negative pixel event no " << event_no << " iTPC sector " << s << " row " << dd->row << endl; + cout << " time ( " << dd->cld[i].t2 << " " << dd->cld[i].t1 << " ) pads ( " << dd->cld[i].p2 << " , " << dd->cld[i].p1 <cld[i].tb << " pad " << dd->cld[i].pad << endl; +#endif + tb_bad_charge_counts_cl[(int)dd->cld[i].tb] += dd->cld[i].charge; + + } else { + pix_count_cl += (dd->cld[i].t2 - dd->cld[i].t1)*(dd->cld[i].p2 - dd->cld[i].p1); + itpc_pix_count_cl += (dd->cld[i].t2 - dd->cld[i].t1)*(dd->cld[i].p2 - dd->cld[i].p1); + } charge_counts_cl[(int)dd->cld[i].pad][dd->row] += dd->cld[i].charge; tb_charge_counts_cl[(int)dd->cld[i].tb] += dd->cld[i].charge; charge_cl += dd->cld[i].charge; - ((TH2D*)contents.cl_width_itpc_tb)->Fill(s,dd->cld[i].t2 - dd->cld[i].t1); + int tb_wd = dd->cld[i].t2 - dd->cld[i].t1; + if(tb_wd<0) tb_wd=0; + ((TH2D*)contents.cl_width_itpc_tb)->Fill(s,tb_wd); ((TH2D*)contents.cl_width_itpc_pad)->Fill(s,dd->cld[i].p2 - dd->cld[i].p1); } } } contents.no_clust_itpc->Fill(s, safelog(noClustiTPC)); + total_cluster += noClustiTPC; } // dd itpc if(has_cld) { for(int i=0;i<512;i++) { extras.array[s + cl_qs_idx - 1]->Fill(i,tb_charge_counts_cl[i]); + extras.array[s + bad_cl_qs_idx - 1]->Fill(i,tb_bad_charge_counts_cl[i]); } } for(int i=1;idet("tpx")->get("cld",s) ; if(dd) { @@ -1066,21 +1190,35 @@ void tpcBuilder::event(daqReader *rdr) if(dd->row<14) continue; // fix for reading pre run 19 files for(u_int i=0;incontent;i++) { noClustTPX++; - if((dd->cld[i].flags==0)) { + if(((dd->cld[i].flags==0)) || (dd->cld[i].flags==2)) { + + if((dd->cld[i].t2 - dd->cld[i].t1)*(dd->cld[i].p2 - dd->cld[i].p1) <0) { + tb_bad_charge_counts_cl[(int)dd->cld[i].tb] += dd->cld[i].charge; +#if fvd + cout << "negative pixel event no " << event_no << " TPX sector " << s << "row " << dd->row+27 << endl; + cout << " time ( " << dd->cld[i].t2 << " " << dd->cld[i].t1 << " ) pads ( " << dd->cld[i].p2 << " , " << dd->cld[i].p1 <cld[i].tb << " pad " << dd->cld[i].pad << endl; +#endif + } pix_count_cl += (dd->cld[i].t2 - dd->cld[i].t1)*(dd->cld[i].p2 - dd->cld[i].p1); charge_counts_cl[(int)dd->cld[i].pad][dd->row+27] += dd->cld[i].charge; tb_charge_counts_cl[(int)dd->cld[i].tb] += dd->cld[i].charge; charge_cl += dd->cld[i].charge; - ((TH2D*)contents.cl_width_tpx_tb)->Fill(s,dd->cld[i].t2 - dd->cld[i].t1); + + int tb_wd = dd->cld[i].t2 - dd->cld[i].t1; + if(tb_wd<0) tb_wd=0; + ((TH2D*)contents.cl_width_tpx_tb)->Fill(s,tb_wd); ((TH2D*)contents.cl_width_tpx_pad)->Fill(s,dd->cld[i].p2 - dd->cld[i].p1); } } } contents.no_clust_tpx->Fill(s, safelog(noClustTPX)); + total_cluster += noClustTPX; } if(has_cld) { for(int i=0;i<512;i++) { extras.array[s + cl_qs_idx_tpx - 1]->Fill(i,tb_charge_counts_cl[i]); + extras.array[s + bad_cl_qs_idx_tpx - 1]->Fill(i,tb_bad_charge_counts_cl[i]); } } @@ -1103,39 +1241,6 @@ void tpcBuilder::event(daqReader *rdr) // Summaries are completed... //printf("%d channel counts: %lf (%lf)\n",rdr->seq, channel_count, pixel_count); // - // Need scale differently for itpx,itpc addc may not be in same event ??? - // must also scale tpx differently. - - //FV This whole scaling does not make much sense to me. Commented out. - // It does make some sense since it tries to ensure that adc - // and clusters are on approximately the same scale - // - /* - if(has_adc) { - - n_adc++; - double adc_scale = (double)(n_adc-1) / (double)n_adc; - if(n_adc == 1) adc_scale = 1; - - for(int i=1;i<=24;i++) { - contents.array[i + qs_idx - 1]->Scale(adc_scale); - } - contents.h_itpc_phi_charge->Scale(adc_scale); - contents.h_itpc_sector_charge->Scale(adc_scale); - } - - if(has_cld) { - n_cld++; - double cld_scale = (double)(n_cld-1) / (double)n_cld; - if(n_cld == 1) cld_scale = 1; - - for(int i=1;i<=24;i++) { - extras.array[i + cl_qs_idx - 1]->Scale(cld_scale); - } - extras.cl_itpc_phi_charge->Scale(cld_scale); - extras.cl_itpc_sector_charge->Scale(cld_scale); - } - */ switch(rdr->trgcmd) { @@ -1149,62 +1254,17 @@ void tpcBuilder::event(daqReader *rdr) contents.itpc_pix_occ_physics->Fill(100.0 * (double)itpc_pixel_count / (itpc_max_channels * 400.0)); extras.itpc_clpix_occ_physics->Fill(100.0 * (double)itpc_pix_count_cl / (itpc_cl_max_channels * 400.0)); - extras.clusters_per_bx->Fill(bunch7bit, pix_count_cl); - - break; - case 8: // Lasers... - case 9: -#if checklaser - { - - LOG(DBG, "Got a laser..."); - - contents.tpc_pix_occ_laser->Fill(100.0 * (double)pixel_count / (tpc_max_channels * 400.0)); - extras.tpc_clpix_occ_laser->Fill(100.0 * (double)pix_count_cl / (cl_max_channels * 400.0)); - contents.itpc_pix_occ_laser->Fill(100.0 * (double)itpc_pixel_count / (itpc_max_channels * 400.0)); - extras.itpc_clpix_occ_laser->Fill(100.0 * (double)itpc_pix_count_cl / (itpc_cl_max_channels * 400.0)); + extras.clusters_per_bx->Fill(bunch7bit, total_cluster); - /* Remove lasers from tpcBuilder - double vDrift = laserReader->Make(rdr); - - LOG("JEFF","Laser Event Processed: run=%d evt=%d vDrift=%lf total_tpc_evts=%d",run, rdr->event_number, vDrift, numberOfEventsRun); - - if((vDrift > 5.4) && (vDrift < 5.8)) { - nlasers++; - contents.h_tpc_drift_vel->Fill(vDrift); - } - drift_vel = contents.h_tpc_drift_vel->GetMean(); - //LOG("JEFF", "run=%d nlasers: %d curr_drift=%lf", run, nlasers, drift_vel); - //if(nlasers == 50) { - if(1) { // inneficient! write all of them :-) - FILE *f = fopen("/RTS/conf/handler/.l4_drift_velocity","w"); - if(f) { - fprintf(f, "%lf", drift_vel); - fclose(f); - } - else { - LOG(OPER, "Can't access drift velocity file!"); - } - - f = fopen("/RTS/conf/handler/.l4_drift_velocity_run","w"); - if(f) { - fprintf(f, "%d", run); - fclose(f); - } - else { - LOG(OPER, "Can't access drift velocity run number file!"); - } - - LOG("JEFF", "Wrote laser to .l4_drift_velocity file %lf %d", drift_vel, run); - } - */ - } -#endif break; - + case 8: // Lasers... + case 9: + + break; + case 10: // Pulsers.. contents.tpc_pix_occ_pulser->Fill(100.0 * (double)pixel_count / (tpc_max_channels * 400.0)); diff --git a/OnlTools/Jevp/StJevpBuilders/tpcBuilder.h b/OnlTools/Jevp/StJevpBuilders/tpcBuilder.h index eab8e469057..c47d00f7fd1 100644 --- a/OnlTools/Jevp/StJevpBuilders/tpcBuilder.h +++ b/OnlTools/Jevp/StJevpBuilders/tpcBuilder.h @@ -49,6 +49,10 @@ class tpcBuilder : public JevpBuilder { TH1 *tpc_pix_occ_laser; TH1 *tpc_pix_occ_pulser; + TH1 *tpc_rdo_bytes; + TH1 *itpc_rdo_bytes; + + TH1 *h_tpc_sec1; TH1 *h_tpc_sec2; @@ -206,6 +210,8 @@ class tpcBuilder : public JevpBuilder { TH1 *tpc_clpix_occ_laser; TH1 *tpc_clpix_occ_pulser; + + TH1 *cl_itpc_chargeStep_s1; TH1 *cl_itpc_chargeStep_s2; TH1 *cl_itpc_chargeStep_s3; @@ -231,6 +237,31 @@ class tpcBuilder : public JevpBuilder { TH1 *cl_itpc_chargeStep_s23; TH1 *cl_itpc_chargeStep_s24; + TH1 *bad_cl_itpc_chargeStep_s1; + TH1 *bad_cl_itpc_chargeStep_s2; + TH1 *bad_cl_itpc_chargeStep_s3; + TH1 *bad_cl_itpc_chargeStep_s4; + TH1 *bad_cl_itpc_chargeStep_s5; + TH1 *bad_cl_itpc_chargeStep_s6; + TH1 *bad_cl_itpc_chargeStep_s7; + TH1 *bad_cl_itpc_chargeStep_s8; + TH1 *bad_cl_itpc_chargeStep_s9; + TH1 *bad_cl_itpc_chargeStep_s10; + TH1 *bad_cl_itpc_chargeStep_s11; + TH1 *bad_cl_itpc_chargeStep_s12; + TH1 *bad_cl_itpc_chargeStep_s13; + TH1 *bad_cl_itpc_chargeStep_s14; + TH1 *bad_cl_itpc_chargeStep_s15; + TH1 *bad_cl_itpc_chargeStep_s16; + TH1 *bad_cl_itpc_chargeStep_s17; + TH1 *bad_cl_itpc_chargeStep_s18; + TH1 *bad_cl_itpc_chargeStep_s19; + TH1 *bad_cl_itpc_chargeStep_s20; + TH1 *bad_cl_itpc_chargeStep_s21; + TH1 *bad_cl_itpc_chargeStep_s22; + TH1 *bad_cl_itpc_chargeStep_s23; + TH1 *bad_cl_itpc_chargeStep_s24; + TH1 *cl_tpx_chargeStep_s1; TH1 *cl_tpx_chargeStep_s2; TH1 *cl_tpx_chargeStep_s3; @@ -256,6 +287,31 @@ class tpcBuilder : public JevpBuilder { TH1 *cl_tpx_chargeStep_s23; TH1 *cl_tpx_chargeStep_s24; + TH1 *bad_cl_tpx_chargeStep_s1; + TH1 *bad_cl_tpx_chargeStep_s2; + TH1 *bad_cl_tpx_chargeStep_s3; + TH1 *bad_cl_tpx_chargeStep_s4; + TH1 *bad_cl_tpx_chargeStep_s5; + TH1 *bad_cl_tpx_chargeStep_s6; + TH1 *bad_cl_tpx_chargeStep_s7; + TH1 *bad_cl_tpx_chargeStep_s8; + TH1 *bad_cl_tpx_chargeStep_s9; + TH1 *bad_cl_tpx_chargeStep_s10; + TH1 *bad_cl_tpx_chargeStep_s11; + TH1 *bad_cl_tpx_chargeStep_s12; + TH1 *bad_cl_tpx_chargeStep_s13; + TH1 *bad_cl_tpx_chargeStep_s14; + TH1 *bad_cl_tpx_chargeStep_s15; + TH1 *bad_cl_tpx_chargeStep_s16; + TH1 *bad_cl_tpx_chargeStep_s17; + TH1 *bad_cl_tpx_chargeStep_s18; + TH1 *bad_cl_tpx_chargeStep_s19; + TH1 *bad_cl_tpx_chargeStep_s20; + TH1 *bad_cl_tpx_chargeStep_s21; + TH1 *bad_cl_tpx_chargeStep_s22; + TH1 *bad_cl_tpx_chargeStep_s23; + TH1 *bad_cl_tpx_chargeStep_s24; + TH1 *cl_itpc_phi_charge; TH1 *cl_itpc_sector_charge; TH1 *cl_tpx_phi_charge; diff --git a/OnlTools/Jevp/level.source b/OnlTools/Jevp/level.source index e4bbe2620c8..c950a7999fd 100644 --- a/OnlTools/Jevp/level.source +++ b/OnlTools/Jevp/level.source @@ -1,6 +1,6 @@ # STAR LEVEL for EVP code -starver SL23c +starver SL24a #starver SL21b diff --git a/OnlTools/Jevp/readme.txt b/OnlTools/Jevp/readme.txt index 2882d69e1ac..13ca76ad1da 100644 --- a/OnlTools/Jevp/readme.txt +++ b/OnlTools/Jevp/readme.txt @@ -14,32 +14,43 @@ readme files: * I. Obtain and compile the code according to rules for the current distro *************************************************************************** -1. Using github clone https://github.com/jml985/star-sw.git - -2. - To guarentee the most modern codes you need to have a mixed git/cvs directory. - - The production jevp code is in the github under jml985/star-sw.git in the branch JevpProduction - - The production RTS code is in cvs under StRoot/RTS - -git init -git config core.sparseCheckout true -git remote add origin https://github.com/YOURCLONE/star-sw.git -echo 'OnlTools/Jevp' > .git/info/sparse-checkout -echo 'OnlTools/PDFUtil' >> .git/info/sparse-checkout -git fetch origin -git checkout origin/JevpProduction -b JevpProduction -cvs co StRoot/RTS -source OnlTools/Jevp/level.source -cons - -3. Make a pull request - - When you have tested your code, use "git commit" and "git push" to put it into your - local repository. Then issue a pull request to the main branch of - https://github.com/star-bnl/star-sw.git. If you use these directions - directly you will need to modify the defaults - - Tell jml@bnl.gov the pull request #. This will allow me to incorporate the code - in the production server without waiting on the various evaluation procedures. - - +I now recommend using code directly from the JevpProduction branch as follows. +Note that cons will take a long time the first time it is compiled + +1. To get your repository, use the upstream repo: jml985/JevpProduction +From scratch +> git init +> get remote add origin https://github.com/YOURCLONE/star-sw.git +> git remote add upstream https://github.com/jml985/star-sw.git + +> git config core.sparseCheckout true +> echo 'OnlTools/Jevp' > .git/info/sparse-checkout +> echo 'StRoot/RTS' >> .git/info/sparse-checkout +> echo 'StRoot/StEEmcPool' >> .git/info/sparse-checkout +> echo 'StRoot/StEmcPool' >> .git/info/sparse-checkout +> echo 'StRoot/StEmcUtil' >> .git/info/sparse-checkout + +> git fetch upstream +> git checkout upstream/JevpProduction -b JevpProduction +> source OnlTools/Jevp/level.source +> cons + +2. To update existing JevpProduction branch +> git fetch upstream +> git merge upstream/JevpProduction +> source OnlTools/Jevp/level.source +> cons + +3. To make a pull request +> git add -u +> git commit -m "your comment" +> git push origin JevpProduction + +Then, use gituhub to make a pull request to the official main branch: + + a. pull request from your JevpProduction to https://github.com/star-bnl/star-sw.git / main + b. tell jml@bnl.gov the pull request # + ********************************** * II. Code structure ********************************** @@ -208,3 +219,33 @@ deep -- value // typically these are not neccessary. The program a a 1 x 10 stack of histograms you can set wide=1 and deep=10 scaley -- value // This forces all histos in the tab to have the same maximum y value + + + +// Old git instructions using merged cvs/github + +// Mixed Distribution... +1. Using github clone https://github.com/jml985/star-sw.git + +2. - To guarentee the most modern codes you need to have a mixed git/cvs directory. + - The production jevp code is in the github under jml985/star-sw.git in the branch JevpProduction + - The production RTS code is in cvs under StRoot/RTS + +git init +git config core.sparseCheckout true +git remote add origin https://github.com/YOURCLONE/star-sw.git +echo 'OnlTools/Jevp' > .git/info/sparse-checkout +echo 'OnlTools/PDFUtil' >> .git/info/sparse-checkout +git fetch origin +git checkout origin/JevpProduction -b JevpProduction +cvs co StRoot/RTS +source OnlTools/Jevp/level.source +cons + +3. Make a pull request + - When you have tested your code, use "git commit" and "git push" to put it into your + local repository. Then issue a pull request to the main branch of + https://github.com/star-bnl/star-sw.git. If you use these directions + directly you will need to modify the defaults + - Tell jml@bnl.gov the pull request #. This will allow me to incorporate the code + in the production server without waiting on the various evaluation procedures.