Skip to content

Commit

Permalink
new commit
Browse files Browse the repository at this point in the history
  • Loading branch information
sixie committed May 3, 2017
0 parents commit cc4a005
Show file tree
Hide file tree
Showing 24 changed files with 15,693 additions and 0 deletions.
579 changes: 579 additions & 0 deletions dat2root.cc

Large diffs are not rendered by default.

37 changes: 37 additions & 0 deletions include/Aux.hh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#ifndef Aux_HH
#define Aux_HH

#include <TGraphErrors.h>
#include <TH1F.h>
#include <TF1.h>
#include <TCanvas.h>
#include <string>

static const int nPoints = 24;
static float outputAmplitude[nPoints] = { 11.7, 13.5, 16.7, 20.7, 24.6, 33.6, 47.4, 59, 73, 87,
101, 116, 131, 144, 163, 197, 235, 306, 391, 466,
544, 669, 831, 937 };

//correcting the extrapolated points by measured / extrapolated ratio
static float amplificationFactor[nPoints] = { 27.9/1.37*10 , 26.8/1.37*10, 31.6/1.37*10, 33.9/1.37*10, 37.3/1.37*10, 40.2/1.37*10, 43.5/1.37*10, 43.1/1.37*10, 44.1/1.37*10, 45.5/1.37*10,
34*10, 35.6*10, 37*10, 40*10, 42*10, 45*10, 48*10, 53*10, 58*10, 61*10,
63*10, 66*10, 68*10, 66*10 };

double GetAmplificationFactor ( double measuredAmplitude );
TGraphErrors* GetTGraphFilter( short* channel, float* time, TString pulseName, bool makePlot = false );
TGraphErrors* GetTGraph( float* channel, float* time );
TGraphErrors GetTGraph( short* channel, float* time );
double GetGaussTime( TGraphErrors* pulse );
int FindMin( int n, short *a);
int FindRealMin( int n, short *a);
int FindMinAbsolute( int n, short *a);
int FindMinFirstPeakAboveNoise( int n, short *a);
float GausFit_MeanTime(TGraphErrors * pulse, const float index_first, const float index_last);
float RisingEdgeFitTime(TGraphErrors * pulse, const float index_min, const float constantFraction, TString fname, bool makePlot = false );
void RisingEdgeFitTime(TGraphErrors * pulse, const float index_min, float* tstamp, int event, TString fname, bool makePlot = false);
float GausFit_MeanTime(TGraphErrors* pulse, const float index_first, const float index_last, TString fname);
float GetBaseline( int peak, short *a );
float GetBaseline(TGraphErrors * pulse, int i_low, int i_high, TString fname );
float GetPulseIntegral(int peak, short *a, std::string option = "");

#endif
319 changes: 319 additions & 0 deletions offset-02.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,319 @@
#include <TFile.h>
#include <TTree.h>
#include <TROOT.h>
#include <TRandom.h>
#include <TApplication.h>
#include <TCanvas.h>
#include <TPostScript.h>
#include <TAxis.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TGraph.h>
#include <TGraphErrors.h>
#include <TLegend.h>
#include <TF1.h>
#include <TLine.h>
#include <TStyle.h>
#include <TProfile.h>
#include <TMapFile.h>
#include <TPaveStats.h>


#include <fstream>
#include <iomanip>
#include <string>
#include <iostream>

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
#include <unistd.h>
#include <sys/mman.h>
#include <errno.h>
#include <ctype.h>
#include <math.h>
#include <time.h>


int graphic_init();

TStyle* style;


int
main(int argc, char **argv){

graphic_init();

TH2F* h2 = new TH2F("h2", "h2", 200, 0, 1024, 400, 0, 4096);
h2->SetBit(TH1::kNoStats);

TH1F* h_tc = new TH1F("h_tc", "Trigger cells", 1024, 0, 1023);

TH1F* h_offset[4][9][1024];
TH1F* h_offmean[4][9];
TH1F* h_offrms[4][9];

char hid[200], htitle[200];

for( int i = 0; i < 4; i++)
for( int j = 0; j < 9; j++)
for( int k = 0; k < 1024; k++){

sprintf( hid, "h_offset_%d_%d_%d", i, j, k);
sprintf( htitle, "Offset_%d_%d_%d", i, j, k);

h_offset[i][j][k] = new TH1F( hid, htitle, 250, 1900, 2400);
}


for( int i = 0; i < 4; i++)
for( int j = 0; j < 9; j++){
sprintf( hid, "h_offmean_%d_%d", i, j);
sprintf( htitle, "Offmean_%d_%d", i, j);

h_offmean[i][j] = new TH1F( hid, htitle, 250, 1900, 2400);

sprintf( hid, "h_offrms_%d_%d", i, j);
sprintf( htitle, "Offrms_%d_%d", i, j);

h_offrms[i][j] = new TH1F( hid, htitle, 100, 0., 5.);
}

uint event_header;
uint temp[3];
uint samples[9][1024];
uint dummy;

char title[200];


// loop over root files
sprintf( title, "/kdrive/data1/caen/2015-11/11-25/%s.dat", argv[1]);

FILE* fpin = fopen( title, "r");

for( int event = 0; event < 1000; event++){
printf("---- event %5d\n", event);

dummy = fread( &event_header, sizeof(uint), 1, fpin);
printf("event header 0 = 0x%08x\n", event_header);
dummy = fread( &event_header, sizeof(uint), 1, fpin);
printf("event header 1 = 0x%08x\n", event_header);
dummy = fread( &event_header, sizeof(uint), 1, fpin);
printf("event header 2 = 0x%08x\n", event_header);
dummy = fread( &event_header, sizeof(uint), 1, fpin);
printf("event header 3 = 0x%08x\n", event_header);

for( int group = 0; group < 4; group++){
dummy = fread( &event_header, sizeof(uint), 1, fpin);

uint tc = (event_header >> 20) & 0xfff;

h_tc->Fill( tc);

int nsample = (event_header & 0xfff)/3;
printf("nsample = %d\n", nsample);

for(int i = 0; i < nsample; i++){
dummy = fread( &temp, sizeof(uint), 3, fpin);
samples[0][i] = temp[0] & 0xfff;
samples[1][i] = (temp[0] >> 12) & 0xfff;
samples[2][i] = (temp[0] >> 24) | ((temp[1] & 0xf) << 8);
samples[3][i] = (temp[1] >> 4) & 0xfff;
samples[4][i] = (temp[1] >> 16) & 0xfff;
samples[5][i] = (temp[1] >> 28) | ((temp[2] & 0xff) << 4);
samples[6][i] = (temp[2] >> 8) & 0xfff;
samples[7][i] = temp[2] >> 20;
}

for(int j = 0; j < nsample/8; j++){
fread( &temp, sizeof(uint), 3, fpin);
samples[8][j*8+0] = temp[0] & 0xfff;
samples[8][j*8+1] = (temp[0] >> 12) & 0xfff;
samples[8][j*8+2] = (temp[0] >> 24) | ((temp[1] & 0xf) << 8);
samples[8][j*8+3] = (temp[1] >> 4) & 0xfff;
samples[8][j*8+4] = (temp[1] >> 16) & 0xfff;
samples[8][j*8+5] = (temp[1] >> 28) | ((temp[2] & 0xff) << 4);
samples[8][j*8+6] = (temp[2] >> 8) & 0xfff;
samples[8][j*8+7] = temp[2] >> 20;
}


for( int i = 0; i < 9; i++)
for( int j = 0; j < 1024; j++){
h_offset[group][i][(tc+j)%1024]->Fill( samples[i][j]);
}

dummy = fread( &event_header, sizeof(uint), 1, fpin);
}
}

TCanvas* c1 = new TCanvas("c1", "c1", 10, 10, 700, 500);
c1->SetFillStyle(4000);
c1->Divide(5, 2);

sprintf( title, "%s-%s.ps", argv[0], argv[1]);
TPostScript* psf1 = new TPostScript( title, 112);

double off_mean[4][9][1024], off_rms[4][9][1024];

for( int i =0; i < 4; i++)
for( int j =0; j < 9; j++)
for( int k =0; k < 1024; k++){
h_offmean[i][j]->Fill( h_offset[i][j][k]->GetMean());
h_offrms[i][j]->Fill( h_offset[i][j][k]->GetRMS());
off_mean[i][j][k] = h_offset[i][j][k]->GetMean();
off_rms[i][j][k] = h_offset[i][j][k]->GetRMS();

if( h_offset[i][j][k]->GetRMS() > 5){
printf("i = %4d, j = %4d, k = %4d => %8.2f\n", i, j, k, off_rms[i][j][k]);
}
}

for( int i =0; i < 4; i++){
psf1->NewPage();

for( int j =0; j < 9; j++){
c1->cd(1+j);
h_offmean[i][j]->Draw();
c1->Update();
}
}

for( int i =0; i < 4; i++){
psf1->NewPage();

for( int j =0; j < 9; j++){
c1->cd(1+j);
h_offrms[i][j]->Draw();
c1->Update();
}
}

for( int i =0; i < 4; i++)
for( int k =0; k < 1; k++){
psf1->NewPage();

for( int j =0; j < 9; j++){
c1->cd(1+j);
h_offset[i][j][k]->Draw();
c1->Update();
}
}

for( int i =0; i < 4; i++)
for( int k =1023; k < 1024; k++){
psf1->NewPage();

for( int j =0; j < 9; j++){
c1->cd(1+j);
h_offset[i][j][k]->Draw();
c1->Update();
}
}

psf1->NewPage();
c1->cd(1);
h_offset[1][3][1009]->Draw();
c1->Update();

c1->cd(2);
h_offset[1][3][1010]->Draw();
c1->Update();

c1->cd(3);
h_offset[1][3][1011]->Draw();
c1->Update();

c1->cd(4);
h_offset[1][3][1012]->Draw();
c1->Update();


psf1->Close();

fclose(fpin);

for( int i = 0; i < 4; i++){
sprintf( title, "v1740_bd1_group_%d_offset.txt", i);

fpin = fopen( title, "w");

for( int k = 0; k < 1024; k++){
for( int j = 0; j < 9; j++){
fprintf( fpin, "%8.2lf ", off_mean[i][j][k]);
// printf("%5d %8.4f\n", j, off_mean[0][0][j]);
}
fprintf( fpin, "\n");
}

fclose(fpin);
}


return 0;
printf("dummy = %d\n", dummy);
}



int
graphic_init( void){

style = new TStyle("style", "style");

style->SetLabelFont(132,"X");
style->SetLabelFont(132,"Y");
style->SetTitleFont(132,"X");
style->SetTitleFont(132,"Y");
style->SetTitleFont(132,"");
style->SetTitleFontSize( 0.07);
style->SetStatFont(132);
style->GetAttDate()->SetTextFont(132);

style->SetStatW(0.20);
style->SetStatH(0.23);

style->SetFuncColor(2);
style->SetFuncWidth(2);
style->SetLineWidth(2);

style->SetOptFile(0);
style->SetOptTitle(1);

style->SetFrameBorderMode(0);
style->SetCanvasBorderMode(0);
style->SetPadBorderMode(0);
style->SetTitleStyle(4000);
style->SetPadColor(0);
style->SetCanvasColor(0);

style->SetTitleFillColor(0);

style->SetTitleBorderSize(0);
// style->SetTitleX(0.3);
// style->SetTitleY(0.06);
style->SetStatColor(0);
style->SetStatBorderSize(1);

style->SetOptStat("emri");
// style->SetOptStat(1);
style->SetOptFit(1);
style->SetTitleOffset( 1.0,"Y");

style->SetMarkerStyle(20);
style->SetMarkerSize( 0.3);
style->SetMarkerColor(4);

// style->SetOptDate(21);

// style->SetPadGridX(1);
// style->SetPadGridY(1);


style->cd();

return 0;
}
Loading

0 comments on commit cc4a005

Please sign in to comment.