#include <iostream.h>

#include "TFndLmdMon.h"
#include "TDirectory.h"
#include "TFndHLmd.h"
#include "TObjArray.h"

ClassImp(TFndLmdMon);

 TFndLmdMon::TFndLmdMon(const char *fmode,Int_t lmd_tdc_bins,Double_t lmd_tdc_min,Double_t lmd_tdc_max) {

   Int_t lmd_adc_bins = 103;
   Double_t lmd_adc_min = 0.;
   Double_t lmd_adc_max = 4120.;

   lmd_mon_adc = 0;
   lmd_mon_tdc = 0;
   lmd_mon_adc_tdc = 0;   

   const char *fhist = "_lmd.root";
   const char *fonl = "onl";
   
   shmflg = 0;
   if(!strcmp(fmode,fonl)) shmflg = 1;
   //cout << "Online flag is " << onlflg << endl;

   Int_t ilen = strlen(fmode)+strlen(fhist);
   Char_t *flmdnam = new Char_t[ilen];
   strcpy(flmdnam,fmode);
   flmdnam = strcat(flmdnam,fhist);
   flmd = new TFile(flmdnam,"RECREATE","Lmd Histogram File");   

   if(shmflg) {
     const char *mfnlmd = "lmd.map";
     //TMapFile::SetMapAddress(0x40f12000);  
     mlmd = TMapFile::Create(mfnlmd,"RECREATE",2000000,"Lmd memory mapped file with histograms");
     mlmd->Print();
   }
   lmdmult = new TH1F("lmdmult","Lmd multiplicity",200,-0.5,199.5);
   lmdmap = new TH2F("lmdmap","Lmd Hit Pattern (Wire vs Drift Number)",20,10.5,30.5,24,0.5,24.5);   
   lmdmapadc0 = new TH2F("lmdmapadc0","Lmd ADC pattern (F || R != 0)",20,10.5,30.5,24,0.5,24.5);   
   lmdmapadc00 = new TH2F("lmdmapadc00","Lmd ADC pattern (F && R != 0)",20,10.5,30.5,24,0.5,24.5);   
   lmdmapadcf = new TH2F("lmdmapadcf","Lmd ADC pattern (Front)",20,10.5,30.5,24,0.5,24.5);   
   lmdmapadcr = new TH2F("lmdmapadcr","Lmd ADC pattern (Rear)",20,10.5,30.5,24,0.5,24.5);   

   lmdmaptdc0 = new TH2F("lmdmaptdc0","Lmd TDC pattern (F || R != 0)",20,10.5,30.5,24,0.5,24.5);   
   lmdmaptdc00 = new TH2F("lmdmaptdc00","Lmd TDC pattern (F && R != 0)",20,10.5,30.5,24,0.5,24.5);   
   lmdmaptdcf = new TH2F("lmdmaptdcf","Lmd TDC pattern (Front)",20,10.5,30.5,24,0.5,24.5);   
   lmdmaptdcr = new TH2F("lmdmaptdcr","Lmd TDC pattern (Rear)",20,10.5,30.5,24,0.5,24.5);   

   char hname[40];
   char htitle[80];

   cout << nlayers << " layers" << endl;
   for (Int_t ji=0;ji<nlayers;ji++) {     
     for (Int_t j=0;j<ndchs;j++) {
       Int_t id = ndchs*ji + j;     
       sprintf(hname,"lmd_all_mapadctdc_%d_%d",ji+1,j+1);
       sprintf(htitle,"ADC F/R vs TDC F/R for dch: %d in layer: %d",j+1,ji+1);
       lmd_all_mapadctdc[id] = new TH2F(hname,htitle,4,-0.5,3.5,4,-0.5,3.5);

       sprintf(hname,"lmd_all_adc_tdc_%d_%d",ji+1,j+1);
       sprintf(htitle,"ADC vs TDC for dch: %d in layer: %d",j+1,ji+1);
       lmd_all_adc_tdc[id] = new TH2F(hname,htitle,50,lmd_tdc_min,lmd_tdc_max,50,lmd_adc_min,lmd_adc_max);
     }
  }   

   for (Int_t jl=0;jl<nwire2;jl++) {     
     sprintf(hname,"lmd_27_adc_tdc_%d",jl+1);
     sprintf(htitle,"ADC vs TDC for dch: 7 in layer: 2 wire: %d",jl+1);
     lmd_27_adc_tdc[jl] = new TH2F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
   }   


   //   LMD   inner  ADC

   if(shmflg) {
     const char *mfnlmd_i_adc = "lmd_inner_adc.map";
     //TMapFile::SetMapAddress(0x410fb000);  
     mlmd_i_adc = TMapFile::Create(mfnlmd_i_adc,"RECREATE",2000000,"Lmd memory mapped file with INNER ADC histograms");
     mlmd_i_adc->Print();
   }
   for (Int_t j=0;j<ndchs;j++) {     

     sprintf(hname,"lmd_all_adcf_%d_%d",1,j+1);
     sprintf(htitle,"ADC Front for dch: %d in layer: %d",j+1,1);
     lmd_all_adcf[j] = new TH1F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
     lmd_all_adcf[j]->SetFillColor(6); 

     sprintf(hname,"lmd_all_adcr_%d_%d",1,j+1);
     sprintf(htitle,"ADC Rear for dch: %d in layer: %d",j+1,1);
     lmd_all_adcr[j] = new TH1F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
     lmd_all_adcr[j]->SetFillColor(7); 

     sprintf(hname,"lmd_all_crg_%d_%d",1,j+1);
     sprintf(htitle,"ADC Front + Rear for dch: %d in layer: %d",j+1,1);
     lmd_all_crg[j] = new TH1F(hname,htitle,lmd_adc_bins,2*lmd_adc_min,2*lmd_adc_max);
     lmd_all_crg[j]->SetFillColor(9);

     sprintf(hname,"lmd_all_adc_%d_%d",1,j+1);
     sprintf(htitle,"ADC Front vs Rear for dch: %d in layer: %d",j+1,1);
     lmd_all_adc[j] = new TH2F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
     lmd_all_adc[j]->SetFillColor(8);
    
     for (Int_t l=0;l<nwire1;l++) {
       
       Int_t k = l+j*nwire1;
       
       sprintf(hname,"lmdadcf_%d_%d_%d",1,j+1,l+1);
       sprintf(htitle,"ADC Front for wire: %d dch: %d in layer: %d",l+1,j+1,1);
       lmdadcf[k] = new TH1F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
       lmdadcf[k]->SetFillColor(6); 

       sprintf(hname,"lmdadcr_%d_%d_%d",1,j+1,l+1);
       sprintf(htitle,"ADC Rear for wire: %d dch: %d in layer: %d",l+1,j+1,1);
       lmdadcr[k] = new TH1F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
       lmdadcr[k]->SetFillColor(7); 

       sprintf(hname,"lmdcrg_%d_%d_%d",1,j+1,l+1);
       sprintf(htitle,"ADC Front + Rear for wire: %d dch: %d in layer: %d",l+1,j+1,1);
       lmdcrg[k] = new TH1F(hname,htitle,lmd_adc_bins,2*lmd_adc_min,2*lmd_adc_max);
       lmdcrg[k]->SetFillColor(9);

       sprintf(hname,"lmdadc_%d_%d_%d",1,j+1,l+1);
       sprintf(htitle,"ADC Front vs Rear for wire: %d dch: %d in layer: %d",l+1,j+1,1);
       //lmdadc[k] = new TH2F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
       //lmdadc[k]->SetFillColor(8);
     }
   }

   //   LMD   inner  TDC
   if(shmflg) {
     const char *mfnlmd_i_tdc = "lmd_inner_tdc.map";
     //TMapFile::SetMapAddress(0x415c0000);  
     mlmd_i_tdc = TMapFile::Create(mfnlmd_i_tdc,"RECREATE",2000000,"Lmd memory mapped file with INNER TDC histograms");
     mlmd_i_tdc->Print();
   }

   for (Int_t ij=0;ij<ndchs;ij++) {     

     sprintf(hname,"lmd_all_tdcf_%d_%d",1,ij+1);
     sprintf(htitle,"TDC Front for dch: %d in layer: %d",ij+1,1);
     lmd_all_tdcf[ij] = new TH1F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
     lmd_all_tdcf[ij]->SetFillColor(6); 

     sprintf(hname,"lmd_all_tdcr_%d_%d",1,ij+1);
     sprintf(htitle,"TDC Rear for dch: %d in layer: %d",ij+1,1);
     lmd_all_tdcr[ij] = new TH1F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
     lmd_all_tdcr[ij]->SetFillColor(7); 

     sprintf(hname,"lmd_all_tdf_%d_%d",1,ij+1);
     sprintf(htitle,"TDC Front - Rear for dch: %d in layer: %d",ij+1,1);
     lmd_all_tdf[ij] = new TH1F(hname,htitle,100,-50.,50.);
     lmd_all_tdf[ij]->SetFillColor(9);

     sprintf(hname,"lmd_all_tdc_%d_%d",1,ij+1);
     sprintf(htitle,"TDC Front vs Rear for dch: %d in layer: %d",ij+1,1);
     lmd_all_tdc[ij] = new TH2F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
     lmd_all_tdc[ij]->SetFillColor(8);

     for (Int_t l=0;l<nwire1;l++) {
       
       Int_t k = l+ij*nwire1;

       sprintf(hname,"lmdtdcf_%d_%d_%d",1,ij+1,l+1);
       sprintf(htitle,"TDC Front for wire: %d dch: %d in layer: %d",l+1,ij+1,1);
       lmdtdcf[k] = new TH1F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
       lmdtdcf[k]->SetFillColor(6); 

       sprintf(hname,"lmdtdcr_%d_%d_%d",1,ij+1,l+1);
       sprintf(htitle,"TDC Rear for wire: %d dch: %d in layer: %d",l+1,ij+1,1);
       lmdtdcr[k] = new TH1F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
       lmdtdcr[k]->SetFillColor(7);      

       sprintf(hname,"lmdtdf_%d_%d_%d",1,ij+1,l+1);
       sprintf(htitle,"TDC Front - Rear for wire: %d dch: %d in layer: %d",l+1,ij+1,1);
       lmdtdf[k] = new TH1F(hname,htitle,100,-50,50);
       lmdtdf[k]->SetFillColor(9);

       sprintf(hname,"lmdtdc_%d_%d_%d",1,ij+1,l+1);
       sprintf(htitle,"TDC Front vs Rear for wire: %d dch: %d in layer: %d",l+1,ij+1,1);
       //lmdtdc[k] = new TH2F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
       //lmdtdc[k]->SetFillColor(8);
       
     }
   }

    //   LMD   outer  ADC
  
   if(shmflg) {
     const char *mfnlmd_o_adc = "lmd_outer_adc.map";
     //TMapFile::SetMapAddress(0x41a85000);  
     mlmd_o_adc = TMapFile::Create(mfnlmd_o_adc,"RECREATE",2000000,"Lmd memory mapped file with OUTER ADC histograms");
     mlmd_o_adc->Print();
   } 
   for (Int_t jj=0;jj<ndchs;jj++) {     

     Int_t lk = jj+ndchs;

     sprintf(hname,"lmd_all_adcf_%d_%d",2,jj+1);
     sprintf(htitle,"ADC Front for dch: %d in layer: %d",jj+1,2);
     lmd_all_adcf[lk] = new TH1F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
     lmd_all_adcf[lk]->SetFillColor(6); 

     sprintf(hname,"lmd_all_adcr_%d_%d",2,jj+1);
     sprintf(htitle,"ADC Rear for dch: %d in layer: %d",jj+1,2);
     lmd_all_adcr[lk] = new TH1F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
     lmd_all_adcr[lk]->SetFillColor(7); 

     sprintf(hname,"lmd_all_crg_%d_%d",2,jj+1);
     sprintf(htitle,"ADC Front + Rear for dch: %d in layer: %d",jj+1,2);
     lmd_all_crg[lk] = new TH1F(hname,htitle,lmd_adc_bins,2*lmd_adc_min,2*lmd_adc_max);
     lmd_all_crg[lk]->SetFillColor(9);

     sprintf(hname,"lmd_all_adc_%d_%d",2,jj+1);
     sprintf(htitle,"ADC Front vs Rear for dch: %d in layer: %d",jj+1,2);
     lmd_all_adc[lk] = new TH2F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
     lmd_all_adc[lk]->SetFillColor(8);

     for (Int_t l=0;l<nwire2;l++) {
       
       Int_t k = l+jj*nwire2+nwire1*ndchs;
       
       sprintf(hname,"lmdadcf_%d_%d_%d",2,jj+1,l+1);
       sprintf(htitle,"ADC Front for wire: %d dch: %d in layer: %d",l+1,jj+1,2);
       lmdadcf[k] = new TH1F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
       lmdadcf[k]->SetFillColor(6); 
       
       sprintf(hname,"lmdadcr_%d_%d_%d",2,jj+1,l+1);
       sprintf(htitle,"ADC Rear for wire: %d dch: %d in layer: %d",l+1,jj+1,2);
       lmdadcr[k] = new TH1F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
       lmdadcr[k]->SetFillColor(7);      
       sprintf(hname,"lmdcrg_%d_%d_%d",2,jj+1,l+1);
       sprintf(htitle,"ADC Front + Rear for wire: %d dch: %d in layer: %d",l+1,jj+1,2);
       lmdcrg[k] = new TH1F(hname,htitle,lmd_adc_bins,2*lmd_adc_min,2*lmd_adc_max);
       lmdcrg[k]->SetFillColor(9);
       sprintf(hname,"lmdadc_%d_%d_%d",2,jj+1,l+1);
       sprintf(htitle,"ADC Front vs Rear for wire: %d dch: %d in layer: %d",l+1,jj+1,2);
       //lmdadc[k] = new TH2F(hname,htitle,lmd_adc_bins,lmd_adc_min,lmd_adc_max,lmd_adc_bins,lmd_adc_min,lmd_adc_max);
       //lmdadc[k]->SetFillColor(8);
       
     }
   }
   
   //   LMD   outer  TDC

   if(shmflg) {
     const char *mfnlmd_o_tdc = "lmd_outer_tdc.map";
     //TMapFile::SetMapAddress(0x41f4a000);  
     mlmd_o_tdc = TMapFile::Create(mfnlmd_o_tdc,"RECREATE",2000000,"Lmd memory mapped file with OUTER TDC histograms");
     mlmd_o_tdc->Print();
   }   
   for (Int_t jk=0;jk<ndchs;jk++) {

     Int_t mk = jk+ndchs;
     sprintf(hname,"lmd_all_tdcf_%d_%d",2,jk+1);
     sprintf(htitle,"TDC Front for dch: %d in layer: %d",jk+1,2);
     lmd_all_tdcf[mk] = new TH1F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
     lmd_all_tdcf[mk]->SetFillColor(6); 

     sprintf(hname,"lmd_all_tdcr_%d_%d",2,jk+1);
     sprintf(htitle,"TDC Rear for dch: %d in layer: %d",jk+1,2);
     lmd_all_tdcr[mk] = new TH1F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
     lmd_all_tdcr[mk]->SetFillColor(7); 

     sprintf(hname,"lmd_all_tdf_%d_%d",2,jk+1);
     sprintf(htitle,"TDC Front - Rear for dch: %d in layer: %d",jk+1,2);
     lmd_all_tdf[mk] = new TH1F(hname,htitle,100,-50.,50.);
     lmd_all_tdf[mk]->SetFillColor(9);

     sprintf(hname,"lmd_all_tdc_%d_%d",2,jk+1);
     sprintf(htitle,"TDC Front vs Rear for dch: %d in layer: %d",jk+1,2);
     lmd_all_tdc[mk] = new TH2F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
     lmd_all_tdc[mk]->SetFillColor(8);

     for (Int_t l=0;l<nwire2;l++) {
       
       Int_t k = l+jk*nwire2+nwire1*ndchs;

       sprintf(hname,"lmdtdcf_%d_%d_%d",2,jk+1,l+1);
       sprintf(htitle,"TDC Front for wire: %d dch: %d in layer: %d",l+1,jk+1,2);
       lmdtdcf[k] = new TH1F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
       lmdtdcf[k]->SetFillColor(6); 

       sprintf(hname,"lmdtdcr_%d_%d_%d",2,jk+1,l+1);
       sprintf(htitle,"TDC Rear for wire: %d dch: %d in layer: %d",l+1,jk+1,2);
       lmdtdcr[k] = new TH1F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
       lmdtdcr[k]->SetFillColor(7);      

       sprintf(hname,"lmdtdf_%d_%d_%d",2,jk+1,l+1);
       sprintf(htitle,"TDC Front - Rear for wire: %d dch: %d in layer: %d",l+1,jk+1,2);
       lmdtdf[k] = new TH1F(hname,htitle,100,-50,50);
       lmdtdf[k]->SetFillColor(9);

       sprintf(hname,"lmdtdc_%d_%d_%d",2,jk+1,l+1);
       sprintf(htitle,"TDC Front vs Rear for wire: %d dch: %d in layer: %d",l+1,jk+1,2);
       //lmdtdc[k] = new TH2F(hname,htitle,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max,lmd_tdc_bins,lmd_tdc_min,lmd_tdc_max);
       //lmdtdc[k]->SetFillColor(8);

     }
   }

}

 TFndLmdMon::TFndLmdMon() {
    mlmd = TMapFile::Create("lmd.map","UPDATE");
    mlmd->Print();
    mlmd_i_adc = TMapFile::Create("lmd_inner_adc.map","UPDATE");
    mlmd_i_adc->Print();
    mlmd_i_tdc = TMapFile::Create("lmd_inner_tdc.map","UPDATE");
    mlmd_i_tdc->Print();
    mlmd_o_adc = TMapFile::Create("lmd_outer_adc.map","UPDATE");
    mlmd_o_adc->Print();
    mlmd_o_tdc = TMapFile::Create("lmd_outer_tdc.map","UPDATE");
    mlmd_o_tdc->Print();
	
    lmd_mon_adc = new TCanvas("lmd_mon_adc","Drift Chambers ADCs",10,10,600,600); 
    lmd_mon_tdc = new TCanvas("lmd_mon_tdc","Drift Chambers TDCs",640,10,600,600); 
    lmd_mon_adc_tdc = new TCanvas("lmd_mon_adc_tdc","Drift Chambers ADC/TDC correlation",640,640,600,300); 
    
    lmd1d = 0;
    lmd2d = 0;
}

 TFndLmdMon::~TFndLmdMon() {

  if(flmd) flmd->Close();
  delete flmd;
  mlmd->Close();
  delete mlmd;
  mlmd_i_adc->Close();
  delete mlmd_i_adc;
  mlmd_o_adc->Close();
  delete mlmd_o_adc;
  mlmd_i_tdc->Close();
  delete mlmd_i_tdc;
  mlmd_o_tdc->Close();
  delete mlmd_o_tdc;

  delete lmd_mon_adc;
  delete lmd_mon_tdc;
  delete lmd_mon_adc_tdc;

  lmd1d = 0;
  lmd2d = 0;
  delete lmd1d;
  delete lmd2d;
}

 void TFndLmdMon::Fill(TFndHdt *fndhdt) {

  TObjArray *fHLmd = fndhdt->GetLmd();

  Int_t nhlmd = fndhdt->GetNHLmd();       
  lmdmult->Fill((Float_t) nhlmd);
  for (Int_t j=0; j<nhlmd; j++) {
    TFndHLmd *hlmd = (TFndHLmd*) fHLmd->At(j);
    
    Int_t dch = hlmd->GetCham();
    Int_t wire = hlmd->GetWire();
    Float_t al =  (Float_t ) hlmd->GetAdcF();
    Float_t ar =  (Float_t ) hlmd->GetAdcR();
    Float_t tl =  (Float_t ) hlmd->GetTdcF();
    Float_t tr =  (Float_t ) hlmd->GetTdcR();
    
    lmdmap->Fill((Float_t) dch,(Float_t) wire);
    if((al+ar)!= 0)
      lmdmapadc0->Fill((Float_t) dch,(Float_t) wire);
    if((al*ar) != 0)
      lmdmapadc00->Fill((Float_t) dch,(Float_t) wire);
    if(al != 0)
      lmdmapadcf->Fill((Float_t) dch,(Float_t) wire);
    if(ar != 0)
      lmdmapadcr->Fill((Float_t) dch,(Float_t) wire);
    
    if((tl+tr)!= 0)
      lmdmaptdc0->Fill((Float_t) dch,(Float_t) wire);
    if((tl*tr) != 0)
      lmdmaptdc00->Fill((Float_t) dch,(Float_t) wire);
    if(tl != 0)
      lmdmaptdcf->Fill((Float_t) dch,(Float_t) wire);
    if(tr != 0)
      lmdmaptdcr->Fill((Float_t) dch,(Float_t) wire);
    
    Int_t il = 0;
    Int_t sf = 0;
    Int_t idx = 0;
    Int_t nwire = 0;
    if(dch <= 18 && dch >= 11) { 
      sf = dch-11;
      il = 0;
      nwire = 12;
    }
    if(dch <= 28 && dch >=21) {
      sf = dch-21;
      il = 1;
      nwire = 22;
    }
    idx = sf+ndchs*il;    

    Float_t itdc = 0.;
    if(tl*tr) itdc = 3.;
    if(tl && !tr) itdc = 1.;
    if(!tl && tr) itdc = 2.;

    Float_t iadc = 0.;
    if(al*ar) iadc = 3.;
    if(al && !ar) iadc = 1.;
    if(!al && ar) iadc = 2.;

    lmd_all_mapadctdc[idx]->Fill(itdc,iadc);
    lmd_all_adc_tdc[idx]->Fill(tl,al);
    lmd_all_adc_tdc[idx]->Fill(tr,ar);

    lmd_27_adc_tdc[wire-1]->Fill(tl,al);
    lmd_27_adc_tdc[wire-1]->Fill(tr,ar);

    lmd_all_adcf[idx]->Fill(al);
    lmd_all_adcr[idx]->Fill(ar);
    lmd_all_adc[idx]->Fill(ar,al);
    lmd_all_crg[idx]->Fill(al+ar);

    lmd_all_tdcf[idx]->Fill(tl);
    lmd_all_tdcr[idx]->Fill(tr);
    lmd_all_tdc[idx]->Fill(tr,tl);
    if (tl != tr) lmd_all_tdf[idx]->Fill(tl-tr);

    sf = wire-1+nwire*sf+nwire1*ndchs*il;
    
    lmdadcf[sf]->Fill(al);
    lmdadcr[sf]->Fill(ar);
    lmdcrg[sf]->Fill(al+ar);

    lmdtdcf[sf]->Fill(tl);
    lmdtdcr[sf]->Fill(tr);
    if (tl != tr) lmdtdf[sf]->Fill(tl-tr);
	  
  }
  
}

 void TFndLmdMon::Update() {

  mlmd->Update();
  mlmd_i_adc->Update();
  mlmd_i_tdc->Update();
  mlmd_o_adc->Update();
  mlmd_o_tdc->Update();

}

 void TFndLmdMon::WriteToFile() {
  flmd->cd();
  lmdmult->Write();
  lmdmap->Write();
  lmdmapadc0->Write();
  lmdmapadc00->Write();
  lmdmapadcf->Write();
  lmdmapadcr->Write();
  lmdmaptdc0->Write();
  lmdmaptdc00->Write();
  lmdmaptdcf->Write();
  lmdmaptdcr->Write();

  for (Int_t j=0;j<ndchs;j++) {     
    
    for(Int_t ik=0;ik<2;ik++) {
      Int_t jk = ik*ndchs + j;
      lmd_all_mapadctdc[jk]->Write();
      lmd_all_adc_tdc[jk]->Write();
      lmd_all_adcf[jk]->Write();
      lmd_all_adcr[jk]->Write();
      lmd_all_crg[jk]->Write();
      lmd_all_adc[jk]->Write();
      lmd_all_tdcf[jk]->Write();
      lmd_all_tdcr[jk]->Write();
      lmd_all_tdf[jk]->Write();
      lmd_all_tdc[jk]->Write();
      }

    for (Int_t lk=0;lk<nwire2;lk++) 
      lmd_27_adc_tdc[lk]->Write();

    for (Int_t l=0;l<(nwire1+nwire2);l++) {
      
      Int_t k = l+j*(nwire1+nwire2);
      lmdadcf[k]->Write();
      lmdadcr[k]->Write();
      lmdcrg[k]->Write();
      //      lmdadc[k]->Write();
      lmdtdcf[k]->Write();
      lmdtdcr[k]->Write();
      lmdtdf[k]->Write();
      //      lmdtdc[k]->Write();
    }
  }       

}

 void TFndLmdMon::DisplayChamber(Int_t layer,Int_t dch) {

  if(layer < 1 || layer > 2) {
    cout << "WRONG layer number " << layer << endl;
    return;
  }
  if(dch < 1 || dch > 8) {
    cout << "WRONG chamber number " << dch << endl;
    return;
  }

  Char_t clayer[2];
  sprintf(clayer,"%d",layer);
  Char_t cdch[3];
  sprintf(cdch,"%d",dch);

  // ADC

  lmd_mon_adc->Clear();
  lmd_mon_adc->Divide(2,2);
  for(Int_t ja=0; ja<4; ja++) {
    TString *hname = new TString("lmd_all_");
    if(ja==0) hname->Append("adcf_");
    if(ja==1) hname->Append("adcr_");
    if(ja==2) hname->Append("adc_");
    if(ja==3) hname->Append("crg_");
    hname->Append(clayer);
    hname->Append("_");
    hname->Append(cdch);
    if(ja != 2) {
      if(layer == 1) {
	lmd1d = (TH1F *) mlmd_i_adc->Get(hname->Data());
      } else {
	lmd1d = (TH1F *) mlmd_o_adc->Get(hname->Data());
      }
    } else {
      if(layer == 1) {
	lmd2d = (TH2F *) mlmd_i_adc->Get(hname->Data());
      } else {
	lmd2d = (TH2F *) mlmd_o_adc->Get(hname->Data());
      }
    }
    lmd_mon_adc->cd(ja+1);
    if(ja != 2) lmd1d->Draw();
    if(ja == 2) lmd2d->Draw();
    delete hname;
  }
  lmd_mon_adc->Update();
  
  lmd_mon_tdc->Clear();
  lmd_mon_tdc->Divide(2,2);
  for(Int_t jb=0; jb<4; jb++) {
    TString *hname = new TString("lmd_all_");
    if(jb==0) hname->Append("tdcf_");
    if(jb==1) hname->Append("tdcr_");
    if(jb==2) hname->Append("tdc_");
    if(jb==3) hname->Append("tdf_");
    hname->Append(clayer);
    hname->Append("_");
    hname->Append(cdch);
    if(jb != 2) {
      if(layer == 1)
	lmd1d = (TH1F *) mlmd_i_tdc->Get(hname->Data());
      else
	lmd1d = (TH1F *) mlmd_o_tdc->Get(hname->Data());
    } else {
      if(layer == 1)
	lmd2d = (TH2F *) mlmd_i_tdc->Get(hname->Data());
      else
	lmd2d = (TH2F *) mlmd_o_tdc->Get(hname->Data());
    }

    lmd_mon_tdc->cd(jb+1);
    if(jb != 2) lmd1d->Draw();
    if(jb == 2) lmd2d->Draw();
    delete hname;
  }
  lmd_mon_tdc->Update();

  lmd_mon_adc_tdc->Clear();
  lmd_mon_adc_tdc->Divide(2,1);
  for(Int_t jc=0; jc<2; jc++) {
    TString *hname = new TString("lmd_all_");
    if(jc==0) hname->Append("mapadctdc_");
    if(jc==1) hname->Append("adc_tdc_");
    hname->Append(clayer);
    hname->Append("_");
    hname->Append(cdch);
    
    lmd2d = (TH2F *) mlmd->Get(hname->Data());
    lmd_mon_adc_tdc->cd(jc+1);
    lmd2d->Draw();
    delete hname;
  }
  lmd_mon_adc_tdc->Update();
}

 void TFndLmdMon::DisplayWire(Int_t layer,Int_t dch,Int_t wire) {

  if(layer < 1 || layer > 2) {
    cout << "WRONG layer number " << layer << endl;
    return;
  }
  if(dch < 1 || dch > 8) {
    cout << "WRONG chamber number " << dch << endl;
    return;
  }
  if(layer == 1 && (wire < 1 || wire > 12)) {
    cout << "WRONG wire number in layer 1: " << wire << endl;
    return;
  }
  if(layer == 2 && (wire < 1 || wire > 22)) {
    cout << "WRONG wire number in layer 2: " << wire << endl;
    return;
  }
	lmd_mon_adc_tdc->Clear();

	TH1F *lmdadc;
	TH1F *lmdtdc;
        Char_t clayer[2];
        sprintf(clayer,"%d",layer);
        Char_t cdch[3];
        sprintf(cdch,"%d",dch);
        Char_t cwire[3];
        sprintf(cwire,"%d",wire);

// ADC

        lmd_mon_adc->Clear();
	lmd_mon_adc->Divide(2,2);
        for(Int_t j=0; j<3; j++) {
          TString *hname = new TString("lmd");
          if(j==0) hname->Append("adcf_");
          if(j==1) hname->Append("adcr_");
          if(j==2) hname->Append("crg_");
  	  hname->Append(clayer);
 	  hname->Append("_");
	  hname->Append(cdch);
 	  hname->Append("_");
	  hname->Append(cwire);
	  if(layer == 1) 
	    lmdadc = (TH1F *) mlmd_i_adc->Get(hname->Data());
	  else 
	    lmdadc = (TH1F *) mlmd_o_adc->Get(hname->Data());
          lmd_mon_adc->cd(j+1);
 	  lmdadc->Draw();
	  delete hname;
	}
        lmd_mon_adc->Update();
	
        lmd_mon_tdc->Clear();
	lmd_mon_tdc->Divide(2,2);
        for(Int_t k=0; k<3; k++) {
          TString *hname = new TString("lmd");
          if(k==0) hname->Append("tdcf_");
          if(k==1) hname->Append("tdcr_");
          if(k==2) hname->Append("tdf_");
  	  hname->Append(clayer);
 	  hname->Append("_");
          hname->Append(cdch);
 	  hname->Append("_");
          hname->Append(cwire);
	  if(layer == 1)
	    lmdtdc = (TH1F *) mlmd_i_tdc->Get(hname->Data());
	  else
	    lmdtdc = (TH1F *) mlmd_o_tdc->Get(hname->Data());
	  
	  lmd_mon_tdc->cd(k+1);
	  lmdtdc->Draw();
	  delete hname;
        }
	lmd_mon_tdc->Update();

}

 void TFndLmdMon::Streamer(TBuffer &R__b) {}
















ROOT page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.