/data3/calcul/jacquem/working_dir/Micromegas/micromegasFrameWork/src/analyse/TB2010/Testbeam_june_10/Complete_detector/Analysis_tb_m2.C File Reference

#include <iostream>
#include <fstream>
#include <map>
#include "TKey.h"
#include <TROOT.h>
#include <TRint.h>
#include <TTree.h>
#include <TFile.h>
#include <TSystem.h>
#include <TreeClass.hh>
#include <TF1.h>
#include <TH1I.h>
#include <TH2I.h>
#include <TH3F.h>
#include <TH2F.h>
#include <TGraph.h>
#include <sstream>
#include <vector>
#include "Log.hh"
#include "MicroException.hh"

Include dependency graph for Analysis_tb_m2.C:

Go to the source code of this file.

Functions

int main (int argc, char **argv)


Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 28 of file Analysis_tb_m2.C.

00028                               {
00029 
00030 
00031   bool verbose_steerfile = 0;
00032   bool verbose_runloop = 0;
00033   bool verbose_ped_file = 0;
00034   bool verbose_offset = 1;
00035 
00036   int nsigma_adc_cut = 2;
00037 
00038 
00039 
00040   if (argc!=2){
00041 
00042     cout<<endl;
00043     cout<<"Number of argument invalid"<<endl;
00044     cout<<" 1 -> steerfile"<<endl;
00045     cout<<endl;}
00046 
00047   else{
00048 
00049 
00050 
00051     /***************Read steerfile***************************************/
00052 
00053     TString ped_gas_string;
00054     TString ped_m2_string;
00055     TString data_string;
00056 
00057     int i = 0;
00058     int j = 0;
00059     int run = 0;
00060     int nrun = 0;
00061 
00062     vector <TString> ped_gas_file_vector;
00063     vector <TString> ped_m2_file_vector;
00064     vector <TString> data_file_vector;
00065 
00066     ifstream steerfile(argv[1]);
00067 
00068     while(steerfile>>ped_gas_string>>ped_m2_string>>data_string){
00069 
00070       if (ped_gas_string=="end_fo_file"){break;}
00071 
00072       else{
00073 
00074         nrun++;
00075         ped_gas_file_vector.push_back(ped_gas_string);
00076         ped_m2_file_vector.push_back(ped_m2_string);
00077         data_file_vector.push_back(data_string);}}
00078 
00079     if (verbose_steerfile){
00080 
00081       cout<<endl;
00082       cout<<"Number of runs = "<<nrun<<endl;
00083       cout<<endl;
00084       for (i=0;i<nrun;i++){
00085         cout<<"Pedestal gassiplex file    = "<<ped_gas_file_vector[i]<<endl;
00086         cout<<"Pedestal m2 prototype file = "<<ped_m2_file_vector[i]<<endl;
00087         cout<<"ROOT data file             = "<<data_file_vector[i]<<endl;
00088         cout<<endl;}
00089       cout<<endl;}
00090 
00091 
00092 
00093 
00094     /*Pedestal file variables*/
00095 
00096     int chn,chb,xpos,ypos;
00097     float ped,ped_err,width,width_err,gain;
00098 
00099     /*M2 chip settings*/
00100 
00101     int nchn_m2 = 9216;
00102     float ped_m2_tab[nchn_m2];
00103     float ped_err_m2_tab[nchn_m2];
00104     float width_m2_tab[nchn_m2];
00105     float width_err_m2_tab[nchn_m2];
00106     float gain_m2_tab[nchn_m2];
00107 
00108     /*Gassiplex chip settings*/
00109 
00110     int nchb_gas = 4;
00111     int nchn_gas = 384;
00112     float ped_gas_tab[nchb_gas][nchn_gas];
00113     float ped_err_gas_tab[nchb_gas][nchn_gas];
00114     float width_gas_tab[nchb_gas][nchn_gas];
00115     float width_err_gas_tab[nchb_gas][nchn_gas];
00116     float thr_gas_tab[nchb_gas][nchn_gas];
00117     float gain_gas_tab[nchb_gas][nchn_gas];
00118 
00119 
00120 
00121 
00122 
00123     /*******************Loop over runs******************************************/
00124 
00125     for (run=0;run<1;run++){
00126 
00127       if (verbose_runloop){
00128 
00129         cout<<endl;
00130         cout<<"Analysis of run "<<run+1<<endl;
00131         cout<<endl;
00132         cout<<"Pedestal gassiplex file    = "<<ped_gas_file_vector[run]<<endl;
00133         cout<<"Pedestal m2 prototype file = "<<ped_m2_file_vector[run]<<endl;
00134         cout<<"ROOT data file             = "<<data_file_vector[run]<<endl;
00135         cout<<endl;}
00136 
00137 
00138 
00139 
00140       /*************************Read pedestal files***************************/
00141 
00142       /*Gassiplex chip settings*/
00143 
00144       for (i=0;i<nchb_gas;i++){
00145         for (j=0;j<nchn_gas;j++){
00146 
00147           ped_gas_tab[i][j] = 0;
00148           ped_err_gas_tab[i][j] = 0;
00149           width_gas_tab[i][j] = 0;
00150           width_err_gas_tab[i][j] = 0;
00151           gain_gas_tab[i][j] = 0;
00152           thr_gas_tab[i][j] = 0;}}
00153 
00154       /*M2 chip settings*/
00155 
00156       for (i=0;i<nchn_m2;i++){
00157 
00158         ped_m2_tab[i] = 0;
00159         ped_err_m2_tab[i] = 0;
00160         width_m2_tab[i] = 0;
00161         width_err_m2_tab[i] = 0;
00162         gain_m2_tab[i] = 0;}
00163 
00164       ifstream ped_gas_file(ped_gas_file_vector[run].Data());
00165       ifstream ped_m2_file(ped_m2_file_vector[run].Data());
00166 
00167       if(verbose_ped_file){cout<<"Read gassiplex pedestal file "<<ped_gas_file_vector[run]<<endl;}
00168       while(ped_gas_file>>chn>>xpos>>ypos>>chb>>ped>>ped_err>>width>>width_err>>gain){
00169 
00170         if (gain!=0){
00171 
00172           if (verbose_ped_file){cout<<chn<<"\t"<<xpos<<"\t"<<ypos<<"\t"<<chb<<"\t"<<ped<<"\t"<<ped_err<<"\t"<<width<<"\t"<<width_err<<"\t"<<gain<<"\r"<<flush;}
00173 
00174           ped_gas_tab[chb-1][chn] = ped;
00175           ped_err_gas_tab[chb-1][chn] = ped_err;
00176           width_gas_tab[chb-1][chn] = width;
00177           width_err_gas_tab[chb-1][chn] = width_err;
00178           gain_gas_tab[chb-1][chn] = gain;
00179           thr_gas_tab[chb-1][chn] = floor(ped + nsigma_adc_cut * width + 1);}}
00180 
00181       if(verbose_ped_file){cout<<endl;cout<<"Read m2 prototype pedestal file "<<ped_m2_file_vector[run]<<endl;}
00182       while(ped_m2_file>>chn>>xpos>>ypos>>chb>>ped>>ped_err>>width>>width_err>>gain){
00183 
00184         if (gain!=0){
00185 
00186           if (verbose_ped_file){cout<<chn<<"\t"<<xpos<<"\t"<<ypos<<"\t"<<chb<<"\t"<<ped<<"\t"<<ped_err<<"\t"<<width<<"\t"<<width_err<<"\t"<<gain<<"\r"<<flush;}
00187 
00188           ped_m2_tab[chn] = ped;
00189           ped_err_m2_tab[chn] = ped_err;
00190           width_m2_tab[chn] = width;
00191           width_err_m2_tab[chn] = width_err;
00192           gain_m2_tab[chn] = gain;}}
00193 
00194       if(verbose_ped_file){cout<<endl;}
00195 
00196 
00197 
00198 
00199 
00200 
00201       /*******************Measure offset between telescope and m2 prototype**********************/
00202 
00203       int ntrigger = 0;
00204 
00205       TFile * rootfile = new TFile(data_file_vector[run]);
00206 
00207       if (verbose_offset){cout<<endl;cout<<"Reading ROOT file "<<data_file_vector[run]<<endl;}
00208 
00209       TIter nextkey(rootfile->GetListOfKeys());
00210       TKey *key;
00211 
00212       while (key = (TKey*)nextkey()) {
00213     
00214         TTree *tree = (TTree*)key->ReadObj();                
00215         MTRun* run = (MTRun*)tree->GetUserInfo()->FindObject("MTRun");
00216         
00217         ntrigger = tree->GetEntries();
00218 
00219         MTEvent *evt = new MTEvent();
00220         TBranch *branch= tree->GetBranch("MTEvent");
00221         branch->SetAddress(&evt);
00222 
00223         if (verbose_offset){cout<<"Number of recorded triggers = "<<ntrigger<<endl;cout<<endl;}
00224       }
00225 
00226 
00227 
00228 
00229 
00230 
00231 
00232 
00233     }
00234 
00235 
00236 
00237 
00238 
00239 
00240 
00241 
00242 
00243 
00244 
00245 
00246   }
00247 
00248 
00249 return 0;}


Generated on Mon Jan 7 13:17:27 2013 for MicromegasFramework by  doxygen 1.4.7