ROOT logo
TH1F * h2max = 0;
void tpcstart(const  char * param= "Param2",const char * out="out.root",
	      Int_t nevent=0, Float_t th=3)
{


  gtpc.SetIO("galice.root", "out.root");

  AliTPCD * dig=new AliTPCD;
  dig.SetName(param);
  gtpc.GetIn()->cd();
  dig.Read(param);
  gtpc.SetDParam(dig);
  gtpc.SetTree(nevent);

  gtpc.SetbDelHisto(kTRUE);
  gtpc.SetThreshold(3);
}
  


void tpccfind(Int_t threshold, Float_t thr = 2,
	      Int_t i1 = 2, Int_t i2 = 2, 
	      Int_t tharea =20, Int_t thmax=100)
{  
  ///////////////////////GRAPHICS//DECLARATION//////////////////////
  TCanvas  * c1 = new TCanvas("padcluster","Cluster finder 1",700,900);
  c1->cd();
  TCanvas  * c2 = new TCanvas("padcluster2","Cluster finder 2",700,900);
  c2->cd();
  c1->cd();
  TPad * pad11 = new TPad("pad11","",0.01,0.76,0.48,0.95,21);
  pad11->Draw();
  TPad * pad12 = new TPad("pad12","",0.51,0.76,0.95,0.95,21);
  pad12->Draw();
  TPad * pad21 = new TPad("pad21","",0.01,0.56,0.49,0.74,21);
  pad21->Draw();
  TPad * pad22 = new TPad("pad22","",0.51,0.56,0.95,0.74,21);
  pad22->Draw();
  TPad * pad31 = new TPad("pad31","",0.01,0.36,0.49,0.54,21);
  pad31->Draw();
  TPad * pad32 = new TPad("pad32","",0.51,0.36,0.95,0.54,21);
  pad32->Draw();
  TPad * pad41 = new TPad("pad41","",0.01,0.16,0.49,0.34,21);
  pad41->Draw();
  TPad * pad42 = new TPad("pad42","",0.51,0.16,0.95,0.34,21);
  pad42->Draw();

  c2->cd();
  TPad * pad11_2 = new TPad("pad11_2","",0.01,0.76,0.48,0.95,21);
  pad11_2->Draw();
  TPad * pad12_2 = new TPad("pad12_2","",0.51,0.76,0.95,0.95,21);
  pad12_2->Draw();
  /////////////////////HISTOGRAMS///DECLARATION///////////////////////
  pad11->cd();
  TH1F * hsx = new TH1F("hsx","Sigma of distribution in time",40,0,2);
  pad12->cd();
  TH1F * hsy = new TH1F("hsy","Sigma of distribution in pads",40,0,2);

  pad21->cd();
  TProfile * hsx2 = new TProfile("hsx2","Sigma of distribution in time",
			 20,100,500);
  pad22->cd();
  TProfile * hsy2 = new TProfile("hsy2","Sigma of distribution in pads",
			 20,100,500);

  pad31->cd();
  TH1F * harea = new TH1F("harea","Area of the peak",26,0,52);
  pad32->cd();
  TH1F * hmax = new TH1F("hmax","Maximal amplitude in peak",30,0,150);
 

  pad41->cd();  
  TProfile * harea2= new TProfile("harea2","Area dependence z coordinata",
			 20,100,500);
  pad42->cd();
  TProfile * hmax2 = new TProfile("hmax2","Maximal amplitude dependence",
			 20,100,500);
  pad41->cd();  

  pad11_2->cd();
  TProfile * harea2p= new TProfile("harea2p","Area dependence on pad coordinata",
			 20,0,100);
  pad12_2->cd();
  TProfile * hmax2p = new TProfile("hmax2p","Maximal amplitude dependence on pad",
			 20,0,50);
  //////////////////CALCULATION//////////////////////////////////////////

  for (Int_t k = i1;k <=i2; k++)
    {
      tpcanal(1,k,10,0,kFALSE);
      TClusterFinder * cf=new TClusterFinder(0,0,threshold,1);
      cf->GetHisto(&gtpc.GetHis1());
      TClonesArray * arr = cf->FindClusters();
      cf->Delete();
      Int_t size = arr->GetEntries();
      
      if ( size>0 )   
	for (Int_t i=0 ; i<size;i++)
	  {
	    Int_t index;
	    TCluster *c=(TCluster*)arr->UncheckedAt(i);
	    hsx->Fill(TMath::Sqrt(c.fSigmaX2));
	    hsy->Fill(TMath::Sqrt(c.fSigmaY2));    
	    if  (TMath::Sqrt(c.fSigmaX2)<thr)
	      hsx2->Fill(c.fX,TMath::Sqrt(c.fSigmaX2),1);
	    if  (TMath::Sqrt(c.fSigmaY2)<thr)
	      hsy2->Fill(c.fX,TMath::Sqrt(c.fSigmaY2),1);       
	    hmax->Fill(c.fMax);
	    harea->Fill(c.fArea);
	    if (c.fArea<tharea)  harea2->Fill(c.fX,c.fArea,1);
            if (c.fMax<thmax) hmax2->Fill(c.fX,c.fMax,1);
	    if (c.fArea<tharea)  harea2p->Fill(c.fY,c.fArea,1);
            if (c.fMax<thmax) hmax2p->Fill(c.fY,c.fMax,1);
	    
	  }
    } 
  gStyle->SetOptStat(1);
  pad11->cd();
  hsx->Draw();
  pad12->cd();
  hsy->Draw();

  pad21->cd();
  hsx2->Draw();
  pad22->cd();
  hsy2->Draw();

  pad31->cd();
  harea->Draw();
  pad32->cd();
  hmax->Draw();

  pad41->cd();
  harea2->Draw();
  pad42->cd();
  hmax2->Draw();


  c1->cd();
  TPaveText * comment = new TPaveText(0.05,0.02,0.95,0.14,"NDC");
  comment->SetTextAlign(12);
  comment->SetFillColor(42);   
  comment->ReadFile("clusters.txt");
  comment->Draw();
  c2->cd();
  pad11_2->cd();
  harea2p->Draw();
  pad12_2->cd();
  hmax2p->Draw();


}


void tpcanal(Int_t sec, Int_t row, Int_t pad, Float_t * res=0, 
	     Bool_t bdraw = kTRUE,Float_t xmin=400,Float_t xmax=500)
{
  //calculate occupancy
  Double_t par[3];
  gtpc.SetSecRowTime(sec,row);
  gtpc.SetHisto(pad);
  //fit occupancy dependence

  gStyle->SetOptStat(0); 
  g1 = new TF1("pol0_r","pol0",xmin,xmax);  
  gtpc.GetHis3()->Fit("pol0_r","R0Q");  
  char s[100];
  
  if (bdraw == kTRUE) 
    {       
      gtpc.Draw("box");
      gtpc.GetPad3().cd();
      gtpc.GetPad3().SetGridx();
      gtpc.GetPad3().SetGridy();       
      gtpc.GetPad3().SetLogy();          
      gtpc.GetPad3().Draw();
      gtpc.GetPad2().cd();
      gtpc.GetPad2().SetGridx();
      gtpc.GetPad2().SetGridy();   
      fitText = new TPaveText(0.1,0.7,0.4,0.9,"NDC");
      gtpc.GetHis3()->Draw();
      sprintf(s,"p0 fit on interval %3.0f+- %3.0f",xmin,xmax);
      fitText->AddText(s);
    }
  g1->GetParameters(&par[0]);
  Float_t error = g1->GetParError(0);

  sprintf(s,"%0.3f+- %0.3f",par[0],error);
  if (bdraw == kTRUE)
    {
      gtpc.GetHis3()->Fit("pol0_r","R0Q");  
      fitText->AddText(s);
      fitText->Draw();
      gtpc.GetPad2().Update();  

      //plot histograms with specified options
      //move pads to another position be possible add text
      gtpc.GetPad1().SetPad(0.05,0.72,0.95,0.95);
      gtpc.GetPad2().SetPad(0.05,0.47,0.95,0.70); 
      gtpc.GetPad3().SetPad(0.05,0.22,0.95,0.45);  
      //add comments to the histograms 
      gtpc.GetCanvas().cd();
      TPaveText * comment = new TPaveText(0.05,0.03,0.95,0.2,"NDC");
      comment->SetTextAlign(12);
      comment->SetFillColor(42);   
      comment->ReadFile("comment.txt");
      comment->Draw();
    }  
  if (res != 0)
    {
      res[0] = par[0];
      res[1] = error;
      cout<<s<<"   "<<res[0]<<"   "<<res[1]<<"\n";
    }
}


void tpcanalall(Int_t isec =1, Int_t lstep = 1,Float_t tmin=400)
{
   AliTPCParam * tpcparam = gtpc->GetParam();
 //make window for displaying results
  TCanvas  * c_occu = new TCanvas("coccu","Occupancy dependence",700,900);
  c_occu->Update();
  TPad * pad1 = new TPad("occupancy","occupancy",0.05,0.25,0.95,0.95,21);
  pad1->Draw();
  //add comments to the histograms 
  TPaveText * comment = new TPaveText(0.05,0.03,0.95,0.2,"NDC");
  comment->SetTextAlign(12);
  comment->SetFillColor(42);
  comment->ReadFile("comment.txt");
  comment->Draw();
  //prepare histogram 
  Int_t irow = tpcparam->GetNRow(isec);
  Float_t xmin = tpcparam->GetPadRowRadii(isec,1);
  Float_t xmax = tpcparam->GetPadRowRadii(isec,irow);  
  pad1->cd();
  char s[220];
  char sh[220];
  sprintf(s,"occu_sector%d",isec);
  sprintf(sh,"Occupancy in sector %d as function of pad raw",isec);  
  TH1F * occudep = new TH1F(s,sh,300,xmin,xmax);
  Float_t   res[20];
  Float_t   x;
  for (Int_t i=2;i<irow;i+=lstep)
    { 
      tpcanal(isec,i,10,&res[0],kFALSE,tmin);
      x = tpcparam->GetPadRowRadii(isec,i) ;
      Int_t index = (300*(x-xmin))/(xmax-xmin);
      cout<<i<<"  "<<index<<"   "<<x<<"   "<<res[0]<<"   "<<res[1]<<"\n";  
      occudep->SetBinContent(index,res[0]);
      occudep->SetBinError(index,res[1]);      
    }
  //plot occupancy histogram
  
  pad1->SetGridx();
  pad1->SetGridy();
  gStyle->SetOptFit(0);       
  occudep->Draw("error");
  occudep->SetXTitle("pad row center position [cm]");
  occudep->SetYTitle("occupancy"); 
 
  //fit occupancy dependence
  //linear fit
  TF1 * g1 = new TF1("pol1_r","pol1");  
  occudep->Fit("pol1_r","+Q"); 
  Double_t par[3];
  Float_t error[3]; 
  Float_t chi;
  g1->GetParameters(&par[0]);
  error[0]=g1->GetParError(0);
  error[1]=g1->GetParError(1);   
  Float_t  chi = g1->GetChisquare();
  sprintf(s,"Linear fit     ocupancy = (%2.3f - %2.3f) +(%2.1f+- %2.1f).r   chi2 = %2.2f",
	  par[0],error[0],1000*par[1],1000*error[1],chi);
  comment->AddText(s);
 //(1-exp([0]1/(r*2+[1]**2)  fit
   TF1 * g1 = new TF1("polm1",occur,1,00,1);  
    occudep->Fit("polm1","+Q"); 
    Double_t par[3];
    Float_t error[3]; 
    g1->GetParameters(&par[0]);
    error[0]=g1->GetParError(0);
    //    error[1]=g1->GetParError(1);
    chi = g1->GetChisquare();
    sprintf(s,"(1-exp(P1/(x^2) fit   P1=(%2.3f+- %2.3f)    chi2=%2.2f ",
  	  par[0],error[0],chi);
    comment->AddText(s);
  c_occu->Update();
    
}

void tpcanalspectra(Int_t isec =1, Int_t r1= 2)
{
   AliTPCParam * tpcparam = gtpc->GetParam();
 //make window for displaying results
  TCanvas  * c_occu = new TCanvas("occuhis","Occupancy dependence",700,900);
  c_occu->Update();
  TPad * pad1 = new TPad("ocpad1","occupancy1",0.05,0.61,0.95,0.95,21);
  pad1->Draw();
  TPad * pad2 = new TPad("ocpad2","occupancy",0.05,0.61,0.95,0.95,21);
  pad2->Draw();

  TPad * pad3 = new TPad("ocpad3","occupancy1",0.05,0.25,0.95,0.60,21);
  pad3->Draw();
  TPad * pad4 = new TPad("ocpad4","occupancy",0.05,0.25,0.95,0.60,21);
  pad4->Draw();

  //add comments to the histograms 
  TPaveText * comment = new TPaveText(0.05,0.03,0.95,0.2,"NDC");
  comment->SetTextAlign(12);
  comment->SetFillColor(42);
  comment->ReadFile("comment.txt");
  comment->Draw();
  TH2F  his
  //prepare histogram 
  for (Int_t i=1;i<irow;i+=lstep)
    { 
      tpcanal(isec,i,10,&res[0],kFALSE,tmin);
    }
  //plot occupancy histogram
  
  pad1->SetGridx();
  pad1->SetGridy();
}




void tpcdraw(Int_t sec, Int_t row, Int_t pad)
{
   gStyle->SetOptStat(0); 
  //calculate occupancy for selected sector and pad row 
  //for selected pad is obtained signal shape 
  Double_t par[3];
  gtpc.SetSecRowTime(sec,row);
  gtpc.SetHisto(pad);
  gtpc.Draw("box");  
  //plot histograms with specified options
  //move pads to another position be possible add text
  gtpc.GetPad1().SetPad(0.05,0.72,0.95,0.95);
  gtpc.GetPad2().SetPad(0.05,0.47,0.95,0.70); 
  gtpc.GetPad3().SetPad(0.05,0.22,0.95,0.45);  
  //fit histogram of occupancy on specified range <150,500> 
  gtpc.GetPad2().cd();
  g1 = new TF1("pol0_r","pol0",150,500); 
  gtpc.GetHis3()->Fit("pol0_r","R0Q");    
  g1->GetParameters(&par[0]);
  Float_t error = g1->GetParError(0);
  fitText = new TPaveText(0.15,0.7,0.3,0.9,"NDC");
  fitText->AddText("p0 fit on interval <150-500>");
  char s[100];
  sprintf(s,"%0.3f+- %0.3f",par[0],error);
  fitText->AddText(s);
  fitText->Draw();
  gtpc.GetPad2().Update();     
  //set logarithmic 
  gtpc.GetPad3().cd();
  gtpc.GetPad3().SetLogy();  
   gtpc.GetPad3().Draw();    
  //add comments to the histograms 
  gtpc.GetCanvas().cd();
  TPaveText * comment = new TPaveText(0.05,0.03,0.95,0.2,"NDC");
  comment->SetTextAlign(12);
  comment->SetFillColor(42);
  comment->ReadFile("comment.txt");
  comment->Draw();
  gtpc.GetCanvas().Update();
  

}


void oDependence()
{
  //set plot options
  gStyle->SetOptFit(1); 
  gStyle->SetOptStat(1);  
  TCanvas  * c1 = new TCanvas("canPRF","Pad response function",700,900);
  TPad * pad1 = new TPad("pad1THR","",0.05,0.55,0.45,0.95,21);
  pad1->Draw();
  TPad * pad2 = new TPad("pad2PRF","",0.55,0.55,0.95,0.95,21);
  pad2->Draw(); 
  TPad * pad3 = new TPad("pad3PRF","",0.55,0.05,0.95,0.45,21);
  pad3->Draw(); 
 
  pad1->cd();
  pad1->SetGridx();
  pad1->SetGridy();
  pad2->SetGridx();
  pad2->SetGridy();
  pad3->SetGridx();
  pad3->SetGridy();

  //make histogram of threshold dependence
  TH1F * hotd =new TH1F("Occupancy dependence on threshold",
			"Ocupancy at first pad row as function of threshold",
                        25,0.,25.);

  hotd->SetBinContent(5,0.625);
  hotd->SetBinError(5,0.02);
  hotd->SetBinContent(10,0.559);
  hotd->SetBinError(10,0.02); 
  hotd->SetBinContent(20,0.478);
  hotd->SetBinError(20,0.02);
  hotd->SetXTitle("Threshold   [channels]");
  hotd->SetYTitle("occupancy");
  hotd->Fit("pol1","+");  
  hotd->Draw("error");
  //make histogram of PRF  dependence
  TH1F * hoprfd =new TH1F("Occupancy dependence on PRF width",
			"Occupancy at first pad row as function of generic PRF sigma for  2.05x0.35 cm pad size ",
                        65, 0.,6.5);
  hoprfd->SetBinContent(10,0.492);
  hoprfd->SetBinError(10,0.02);

  hoprfd->SetBinContent(20,0.524);
  hoprfd->SetBinError(20,0.02); 

  hoprfd->SetBinContent(30,0.559);
  hoprfd->SetBinError(30,0.02);
  hoprfd->SetXTitle("Sigma of PRF   [mm]");
  hoprfd->SetYTitle("occupancy");
  pad2->cd();
  hoprfd->Fit("pol1","+");  
  hoprfd->Draw("error");
  pad2->Draw();
  //pad 3 histogram  
  pad3->cd();
   TH1F * hoprfd88 =new TH1F("Occupancy dependence on PRF width 08x08",
			"Occupancy at first pad row as function of generic PRF sigma for  0.8x0.8 cm pad size ",
                        65, 0.,6.5);

  hoprfd88->SetBinContent(20,0.322);
  hoprfd88->SetBinError(20,0.02);

  hoprfd88->SetBinContent(30,0.344);
  hoprfd88->SetBinError(30,0.02); 

  hoprfd88->SetBinContent(40,0.369);
  hoprfd88->SetBinError(40,0.02);
 
  hoprfd88->SetBinContent(60,0.416);
  hoprfd88->SetBinError(60,0.02);
  hoprfd88->SetXTitle("Sigma of PRF   [mm]");
  hoprfd88->SetYTitle("occupancy");
  hoprfd88->Fit("pol1","+");  
  hoprfd88->Draw("error");
  c1->cd();
  TPaveText * comment = new TPaveText(0.05,0.15,0.45,0.35,"NDC");
  comment->SetTextAlign(12);
  comment->SetFillColor(42);  
  comment->ReadFile("commentdep.txt");  
  comment->Draw();

}

void produceHisto()
{ 
  TH1F * hmostimp =new TH1F("number most important",
			"Mean value number of over threshold digits produced by \
most important  particle",
                        20,0.,23.);
  gStyle->SetOptStat(0); 
  hmostimp->Fill(1.,33.51);
  hmostimp->Fill(5.,34.32);
  hmostimp->Fill(10.,35.78);
  hmostimp->Fill(15.,36.85);
  hmostimp->Fill(20.,37.61);
  hmostimp->Write();
  hmostimp->SetMinimum(32.);
  delete hmostimp;
  
  TH1F * hall =new TH1F("number all3",
			"Mean value Number of over threshold digits produced by \
alll three stored particles",
                        20,0.,23.);
  gStyle->SetOptStat(0); 
  hall->Fill(1.,77.05);
  hall->Fill(5.,76.905);
  hall->Fill(10.,71.9);
  hall->Fill(15.,69.7);
  hall->Fill(20.,65.15);
  hall->Write();
  hall->SetMinimum(32.);    
}

void create6()
{
  TCanvas *cnumber =new TCanvas("Number","Number",600,900);    
  TPad *pad1 =new TPad("pad1","pad1",0.05,0.7,0.45,0.95);  
  pad1->cd();    
  pad1->Draw();
  gtpc.fout->Get("His_1_1").Draw(); 
  pad1->Update();
  TPad *pad2 =new TPad("pad2","pad2",0.55,0.7,0.95,0.95); 
  TPad *pad3 =new TPad("pad3","pad3",0.05,0.35,0.45,0.66);      
  TPad *pad4 =new TPad("pad4","pad4",0.55,0.35,0.95,0.66);
  TPad *pad5 =new TPad("pad5","pad5",0.05,0.05,0.45,0.32);      
  TPad *pad6 =new TPad("pad5","pad6",0.55,0.05,0.95,0.32);   
}

Double_t xtom1(Double_t *x, Double_t *par)
{ 
  Double_t xm=x[0]/100.;
  return (par[0]/(xm*xm));
}

Double_t xtomo(Double_t *x, Double_t *par)
{ 
  Double_t xm=x[0]/100.;
  return (par[0]/(xm**par[1]));
}

Double_t occur(Double_t *x, Double_t *par)
{
  Double_t xm=x[0]/100.;
  return  (1-exp(-par[0]/(xm**2)));
} 

void probability(Float_t param = 1, Float_t x1 = 0.9, Float_t x2 = 1.3, 
		 Float_t over = 2,const char * com ="", Int_t N=20)
{  

  //create canvas for drawing
  TCanvas  * c1 = new TCanvas("canprob","Pad response function",700,900);
  TPad * pad1 = new TPad("Theoretical probability","",0.05,0.22,0.95,0.95,21);
  pad1->Draw();
   
  //create histogram with estimated occupancy 
  //normalised to obtained occupancy at first pad
  Float_t y1=0;
  Float_t y2;
  char s[120];
  sprintf(s,"1-exp(-[1]/x**%f)",over);
  cout<<s<<"\n";
  TF1 *funr1 = new TF1("funr1",s,x1,x2);
  funr1->SetParameters(1,param);
  sprintf(s,"Probability  according 1-exp(-%1.3f/x**%1.1f distribution)",
	  param,over);
  pad1->cd();
  TH1F * hOccuT = new TH1F("hOccuT",s,5*N,x1,x2);
  Float_t x=x1;
  Float_t y;

  for (Float_t i = 0;i<N+1;i++)
    {     
      y = funr1->Eval(x);
      hOccuT->Fill(x,y);
      x+=(x2-x1)/Float_t(N);
    };
  //fitting calculated dependence with linear fit and with
  //generic function
  pad1->cd();
  sprintf(s,"[1]/(x**%1.1f)",over);
  TF1 *lin1 = new TF1("lin1","pol1",x1,x2);
  lin1->SetLineColor(2);
  lin1->SetLineWidth(5);
  lin1->SetLineStyle(1);
  hOccuT->Draw();
  hOccuT->Fit("lin1","S+");

  sprintf(s,"[1]/(x**%1.1f)",over);
  TF1 *funorig = new TF1("funorig",s,x1,x2);
  funorig->SetLineColor(3);
  funorig->SetLineWidth(5);
  funorig->SetLineStyle(2);
  hOccuT->Fit("funorig","S+");
  
  //find minimum and maximum and scale histo  
  if (y1 == 0)  
    {
      Float_t ymin,ymax;
      y1=lin1->Eval(x2);
      y2=lin1->Eval(x1);
      ymin= funorig->Eval(x2);
      ymax= funorig->Eval(x1);
      if (ymin<y1) y1=ymin;
      if (ymax>y2) y2=ymax;
    }
  gStyle->SetOptFit(0);
  gStyle->SetOptStat(0); 
  hOccuT->SetMaximum(y2);
  hOccuT->SetMinimum(y1); 
  hOccuT->SetXTitle("r position [m]");
  hOccuT->SetYTitle("probability");  
  //add comments to the histograms 
  c1->cd();
  TPaveText * comment = new TPaveText(0.05,0.03,0.95,0.20,"NDC");
  comment->SetTextAlign(12);
  comment->SetFillColor(42);
  TText *title = comment->AddText("Estimation of occupancy dependence on R position");
  title->SetTextSize(0.04);
  comment->AddText("Observed efect of probability saturation");
  sprintf(s,"Supposed generic flux dependence : %1.3f/(x**%1.1f)",param,over);
  comment->AddText(s);
  comment->AddText("Probility : 1-exp(-flux*mean particle \"pad x time\" area)");
  comment->AddText("Full line  linear fit ");
  comment->AddText("Dashed line : fit by generic flux function ");
  
  comment->AddText(com);
  comment->Draw();
}



void digamp(Float_t t1, Float_t t2, Float_t p1, Float_t p2, Float_t th)
{
  gStyle->SetOptStat(1); 
  TH1F * h2max = new TH1F("all amplitudes","all amplitude", 20, 1,600);
  for (Int_t itime = t1;itime<t2;itime++)
  for (Int_t ipad = p1;ipad<p2;ipad++)  
    {
      Int_t index = gtpc.GetHis1().GetBin(itime,ipad);
      Float_t weight = gtpc.GetHis1().GetBinContent(index);
      //      cout<<itime<<"\t"<<ipad<<"\t"<<weight<<"\n";
      if (weight > th) h2max->Fill(weight);
    };  
   h2max->Draw();
}            

void digampM(Float_t t1, Float_t t2, Float_t p1, Float_t p2, Float_t th)
{
  gStyle->SetOptStat(1); 

  //create canvas for drawing
  //  TCanvas  * c1 = new TCanvas("dh","Amplitude",700,900);
  //TPad * pad1 = new TPad("amplitude","",0.05,0.22,0.95,0.95,21);
  //pad1->Draw();

  if (h2max == 0) h2max = new TH1F("max amplitudes","max amplitude", 25, 1,250);
  for (Int_t itime = t1;itime<t2;itime++)
  for (Int_t ipad = p1;ipad<p2;ipad++)  
    {
      Bool_t bmax = kTRUE;
      Int_t index = gtpc.GetHis1().GetBin(itime,ipad);
      Float_t weight = gtpc.GetHis1().GetBinContent(index);
      if (weight>th)
	{
	  for (Int_t i = -1;i<2;i++) 
	    for (Int_t j = -1;j<2;j++) 	  
	      if (!((0==i)&&(0==j)))
		{
		  index = gtpc.GetHis1().GetBin(itime+i,ipad+j);
		  Float_t weightl = gtpc.GetHis1().GetBinContent(index);
		  if (!(weightl<weight)) bmax = kFALSE;
		}     
	  if (kTRUE==bmax) h2max->Fill(weight);
	}
    };  
   h2max->Draw("error");

}            



void digampMALL(Float_t t1, Float_t t2, Float_t p1, Float_t p2, Float_t th )
{
  for (Int_t i=1;i<20;i++)
    {
      tpcanal(1,i,10);
      digampM(t1,t2,p1,p2,th);
    }
}
 diganal.C:1
 diganal.C:2
 diganal.C:3
 diganal.C:4
 diganal.C:5
 diganal.C:6
 diganal.C:7
 diganal.C:8
 diganal.C:9
 diganal.C:10
 diganal.C:11
 diganal.C:12
 diganal.C:13
 diganal.C:14
 diganal.C:15
 diganal.C:16
 diganal.C:17
 diganal.C:18
 diganal.C:19
 diganal.C:20
 diganal.C:21
 diganal.C:22
 diganal.C:23
 diganal.C:24
 diganal.C:25
 diganal.C:26
 diganal.C:27
 diganal.C:28
 diganal.C:29
 diganal.C:30
 diganal.C:31
 diganal.C:32
 diganal.C:33
 diganal.C:34
 diganal.C:35
 diganal.C:36
 diganal.C:37
 diganal.C:38
 diganal.C:39
 diganal.C:40
 diganal.C:41
 diganal.C:42
 diganal.C:43
 diganal.C:44
 diganal.C:45
 diganal.C:46
 diganal.C:47
 diganal.C:48
 diganal.C:49
 diganal.C:50
 diganal.C:51
 diganal.C:52
 diganal.C:53
 diganal.C:54
 diganal.C:55
 diganal.C:56
 diganal.C:57
 diganal.C:58
 diganal.C:59
 diganal.C:60
 diganal.C:61
 diganal.C:62
 diganal.C:63
 diganal.C:64
 diganal.C:65
 diganal.C:66
 diganal.C:67
 diganal.C:68
 diganal.C:69
 diganal.C:70
 diganal.C:71
 diganal.C:72
 diganal.C:73
 diganal.C:74
 diganal.C:75
 diganal.C:76
 diganal.C:77
 diganal.C:78
 diganal.C:79
 diganal.C:80
 diganal.C:81
 diganal.C:82
 diganal.C:83
 diganal.C:84
 diganal.C:85
 diganal.C:86
 diganal.C:87
 diganal.C:88
 diganal.C:89
 diganal.C:90
 diganal.C:91
 diganal.C:92
 diganal.C:93
 diganal.C:94
 diganal.C:95
 diganal.C:96
 diganal.C:97
 diganal.C:98
 diganal.C:99
 diganal.C:100
 diganal.C:101
 diganal.C:102
 diganal.C:103
 diganal.C:104
 diganal.C:105
 diganal.C:106
 diganal.C:107
 diganal.C:108
 diganal.C:109
 diganal.C:110
 diganal.C:111
 diganal.C:112
 diganal.C:113
 diganal.C:114
 diganal.C:115
 diganal.C:116
 diganal.C:117
 diganal.C:118
 diganal.C:119
 diganal.C:120
 diganal.C:121
 diganal.C:122
 diganal.C:123
 diganal.C:124
 diganal.C:125
 diganal.C:126
 diganal.C:127
 diganal.C:128
 diganal.C:129
 diganal.C:130
 diganal.C:131
 diganal.C:132
 diganal.C:133
 diganal.C:134
 diganal.C:135
 diganal.C:136
 diganal.C:137
 diganal.C:138
 diganal.C:139
 diganal.C:140
 diganal.C:141
 diganal.C:142
 diganal.C:143
 diganal.C:144
 diganal.C:145
 diganal.C:146
 diganal.C:147
 diganal.C:148
 diganal.C:149
 diganal.C:150
 diganal.C:151
 diganal.C:152
 diganal.C:153
 diganal.C:154
 diganal.C:155
 diganal.C:156
 diganal.C:157
 diganal.C:158
 diganal.C:159
 diganal.C:160
 diganal.C:161
 diganal.C:162
 diganal.C:163
 diganal.C:164
 diganal.C:165
 diganal.C:166
 diganal.C:167
 diganal.C:168
 diganal.C:169
 diganal.C:170
 diganal.C:171
 diganal.C:172
 diganal.C:173
 diganal.C:174
 diganal.C:175
 diganal.C:176
 diganal.C:177
 diganal.C:178
 diganal.C:179
 diganal.C:180
 diganal.C:181
 diganal.C:182
 diganal.C:183
 diganal.C:184
 diganal.C:185
 diganal.C:186
 diganal.C:187
 diganal.C:188
 diganal.C:189
 diganal.C:190
 diganal.C:191
 diganal.C:192
 diganal.C:193
 diganal.C:194
 diganal.C:195
 diganal.C:196
 diganal.C:197
 diganal.C:198
 diganal.C:199
 diganal.C:200
 diganal.C:201
 diganal.C:202
 diganal.C:203
 diganal.C:204
 diganal.C:205
 diganal.C:206
 diganal.C:207
 diganal.C:208
 diganal.C:209
 diganal.C:210
 diganal.C:211
 diganal.C:212
 diganal.C:213
 diganal.C:214
 diganal.C:215
 diganal.C:216
 diganal.C:217
 diganal.C:218
 diganal.C:219
 diganal.C:220
 diganal.C:221
 diganal.C:222
 diganal.C:223
 diganal.C:224
 diganal.C:225
 diganal.C:226
 diganal.C:227
 diganal.C:228
 diganal.C:229
 diganal.C:230
 diganal.C:231
 diganal.C:232
 diganal.C:233
 diganal.C:234
 diganal.C:235
 diganal.C:236
 diganal.C:237
 diganal.C:238
 diganal.C:239
 diganal.C:240
 diganal.C:241
 diganal.C:242
 diganal.C:243
 diganal.C:244
 diganal.C:245
 diganal.C:246
 diganal.C:247
 diganal.C:248
 diganal.C:249
 diganal.C:250
 diganal.C:251
 diganal.C:252
 diganal.C:253
 diganal.C:254
 diganal.C:255
 diganal.C:256
 diganal.C:257
 diganal.C:258
 diganal.C:259
 diganal.C:260
 diganal.C:261
 diganal.C:262
 diganal.C:263
 diganal.C:264
 diganal.C:265
 diganal.C:266
 diganal.C:267
 diganal.C:268
 diganal.C:269
 diganal.C:270
 diganal.C:271
 diganal.C:272
 diganal.C:273
 diganal.C:274
 diganal.C:275
 diganal.C:276
 diganal.C:277
 diganal.C:278
 diganal.C:279
 diganal.C:280
 diganal.C:281
 diganal.C:282
 diganal.C:283
 diganal.C:284
 diganal.C:285
 diganal.C:286
 diganal.C:287
 diganal.C:288
 diganal.C:289
 diganal.C:290
 diganal.C:291
 diganal.C:292
 diganal.C:293
 diganal.C:294
 diganal.C:295
 diganal.C:296
 diganal.C:297
 diganal.C:298
 diganal.C:299
 diganal.C:300
 diganal.C:301
 diganal.C:302
 diganal.C:303
 diganal.C:304
 diganal.C:305
 diganal.C:306
 diganal.C:307
 diganal.C:308
 diganal.C:309
 diganal.C:310
 diganal.C:311
 diganal.C:312
 diganal.C:313
 diganal.C:314
 diganal.C:315
 diganal.C:316
 diganal.C:317
 diganal.C:318
 diganal.C:319
 diganal.C:320
 diganal.C:321
 diganal.C:322
 diganal.C:323
 diganal.C:324
 diganal.C:325
 diganal.C:326
 diganal.C:327
 diganal.C:328
 diganal.C:329
 diganal.C:330
 diganal.C:331
 diganal.C:332
 diganal.C:333
 diganal.C:334
 diganal.C:335
 diganal.C:336
 diganal.C:337
 diganal.C:338
 diganal.C:339
 diganal.C:340
 diganal.C:341
 diganal.C:342
 diganal.C:343
 diganal.C:344
 diganal.C:345
 diganal.C:346
 diganal.C:347
 diganal.C:348
 diganal.C:349
 diganal.C:350
 diganal.C:351
 diganal.C:352
 diganal.C:353
 diganal.C:354
 diganal.C:355
 diganal.C:356
 diganal.C:357
 diganal.C:358
 diganal.C:359
 diganal.C:360
 diganal.C:361
 diganal.C:362
 diganal.C:363
 diganal.C:364
 diganal.C:365
 diganal.C:366
 diganal.C:367
 diganal.C:368
 diganal.C:369
 diganal.C:370
 diganal.C:371
 diganal.C:372
 diganal.C:373
 diganal.C:374
 diganal.C:375
 diganal.C:376
 diganal.C:377
 diganal.C:378
 diganal.C:379
 diganal.C:380
 diganal.C:381
 diganal.C:382
 diganal.C:383
 diganal.C:384
 diganal.C:385
 diganal.C:386
 diganal.C:387
 diganal.C:388
 diganal.C:389
 diganal.C:390
 diganal.C:391
 diganal.C:392
 diganal.C:393
 diganal.C:394
 diganal.C:395
 diganal.C:396
 diganal.C:397
 diganal.C:398
 diganal.C:399
 diganal.C:400
 diganal.C:401
 diganal.C:402
 diganal.C:403
 diganal.C:404
 diganal.C:405
 diganal.C:406
 diganal.C:407
 diganal.C:408
 diganal.C:409
 diganal.C:410
 diganal.C:411
 diganal.C:412
 diganal.C:413
 diganal.C:414
 diganal.C:415
 diganal.C:416
 diganal.C:417
 diganal.C:418
 diganal.C:419
 diganal.C:420
 diganal.C:421
 diganal.C:422
 diganal.C:423
 diganal.C:424
 diganal.C:425
 diganal.C:426
 diganal.C:427
 diganal.C:428
 diganal.C:429
 diganal.C:430
 diganal.C:431
 diganal.C:432
 diganal.C:433
 diganal.C:434
 diganal.C:435
 diganal.C:436
 diganal.C:437
 diganal.C:438
 diganal.C:439
 diganal.C:440
 diganal.C:441
 diganal.C:442
 diganal.C:443
 diganal.C:444
 diganal.C:445
 diganal.C:446
 diganal.C:447
 diganal.C:448
 diganal.C:449
 diganal.C:450
 diganal.C:451
 diganal.C:452
 diganal.C:453
 diganal.C:454
 diganal.C:455
 diganal.C:456
 diganal.C:457
 diganal.C:458
 diganal.C:459
 diganal.C:460
 diganal.C:461
 diganal.C:462
 diganal.C:463
 diganal.C:464
 diganal.C:465
 diganal.C:466
 diganal.C:467
 diganal.C:468
 diganal.C:469
 diganal.C:470
 diganal.C:471
 diganal.C:472
 diganal.C:473
 diganal.C:474
 diganal.C:475
 diganal.C:476
 diganal.C:477
 diganal.C:478
 diganal.C:479
 diganal.C:480
 diganal.C:481
 diganal.C:482
 diganal.C:483
 diganal.C:484
 diganal.C:485
 diganal.C:486
 diganal.C:487
 diganal.C:488
 diganal.C:489
 diganal.C:490
 diganal.C:491
 diganal.C:492
 diganal.C:493
 diganal.C:494
 diganal.C:495
 diganal.C:496
 diganal.C:497
 diganal.C:498
 diganal.C:499
 diganal.C:500
 diganal.C:501
 diganal.C:502
 diganal.C:503
 diganal.C:504
 diganal.C:505
 diganal.C:506
 diganal.C:507
 diganal.C:508
 diganal.C:509
 diganal.C:510
 diganal.C:511
 diganal.C:512
 diganal.C:513
 diganal.C:514
 diganal.C:515
 diganal.C:516
 diganal.C:517
 diganal.C:518
 diganal.C:519
 diganal.C:520
 diganal.C:521
 diganal.C:522
 diganal.C:523
 diganal.C:524
 diganal.C:525
 diganal.C:526
 diganal.C:527
 diganal.C:528
 diganal.C:529
 diganal.C:530
 diganal.C:531
 diganal.C:532
 diganal.C:533
 diganal.C:534
 diganal.C:535
 diganal.C:536
 diganal.C:537
 diganal.C:538
 diganal.C:539
 diganal.C:540
 diganal.C:541
 diganal.C:542
 diganal.C:543
 diganal.C:544
 diganal.C:545
 diganal.C:546
 diganal.C:547
 diganal.C:548
 diganal.C:549
 diganal.C:550
 diganal.C:551
 diganal.C:552
 diganal.C:553
 diganal.C:554
 diganal.C:555
 diganal.C:556
 diganal.C:557
 diganal.C:558
 diganal.C:559
 diganal.C:560
 diganal.C:561
 diganal.C:562
 diganal.C:563
 diganal.C:564
 diganal.C:565
 diganal.C:566
 diganal.C:567
 diganal.C:568
 diganal.C:569
 diganal.C:570
 diganal.C:571
 diganal.C:572
 diganal.C:573
 diganal.C:574
 diganal.C:575
 diganal.C:576
 diganal.C:577
 diganal.C:578
 diganal.C:579
 diganal.C:580
 diganal.C:581
 diganal.C:582
 diganal.C:583
 diganal.C:584
 diganal.C:585
 diganal.C:586
 diganal.C:587
 diganal.C:588
 diganal.C:589
 diganal.C:590
 diganal.C:591
 diganal.C:592
 diganal.C:593
 diganal.C:594
 diganal.C:595
 diganal.C:596
 diganal.C:597
 diganal.C:598
 diganal.C:599
 diganal.C:600
 diganal.C:601
 diganal.C:602
 diganal.C:603
 diganal.C:604
 diganal.C:605
 diganal.C:606
 diganal.C:607
 diganal.C:608
 diganal.C:609
 diganal.C:610
 diganal.C:611
 diganal.C:612
 diganal.C:613
 diganal.C:614
 diganal.C:615
 diganal.C:616
 diganal.C:617
 diganal.C:618
 diganal.C:619
 diganal.C:620
 diganal.C:621
 diganal.C:622
 diganal.C:623
 diganal.C:624
 diganal.C:625
 diganal.C:626
 diganal.C:627
 diganal.C:628
 diganal.C:629
 diganal.C:630
 diganal.C:631
 diganal.C:632
 diganal.C:633
 diganal.C:634
 diganal.C:635
 diganal.C:636
 diganal.C:637
 diganal.C:638
 diganal.C:639
 diganal.C:640
 diganal.C:641
 diganal.C:642
 diganal.C:643
 diganal.C:644
 diganal.C:645
 diganal.C:646
 diganal.C:647
 diganal.C:648
 diganal.C:649
 diganal.C:650
 diganal.C:651
 diganal.C:652
 diganal.C:653
 diganal.C:654
 diganal.C:655
 diganal.C:656
 diganal.C:657
 diganal.C:658
 diganal.C:659
 diganal.C:660
 diganal.C:661
 diganal.C:662
 diganal.C:663
 diganal.C:664
 diganal.C:665