}


void ScaleChan2Ener(int det,double &scale1,double &scale2){
  double E11,E12,E21,E22,m,b,m1,b1,z,E1,E2,l,l1; //float to double
  int max,k=0;

  /*Scurve endpoints*/
  
  test = new TH1D("test","",95,0,190);
  TF1  *fun1 = new TF1("fun1","pol2",10,130);
  TF1 *f1 =new TF1 ("f1","pol2+gaus(3)");
  TF1 *f =new TF1 ("f","pol0");


  for (int j=minX;j<maxX;j=j+2){

    E1E2[det]->ProjectionY("test",j-2,j+2);
    if (test->GetEntries()>20){
      
      Ref=test->GetMaximumBin()*2;
      BC=test->GetBinContent(Ref/2);
   
      test->Fit(f,"R","",0,Ref-30);
      bg=f->GetParameter(0);
      f1->SetParameters(bg,0,0,BC,Ref,2);
      test->Fit(f1,"R","",0,130);
}
}
}




int breakup::Analysis(unsigned int evSta ,unsigned int evSto,int Polar)
{
 
  if (fChain == 0) return 1;

  Long64_t nbytes = 0, nb = 0;
  int analysis=0;
  double E1,E2;
  for (Long64_t jentry=evSta; jentry<evSto;jentry++)
    {

      Long64_t ientry = LoadTree(jentry);

      if (ientry < 0) {analysis =1;break;}
      nb = fChain->GetEntry(jentry);   
      nbytes += nb;
					
	      
	    E1E2[det1]->Fill(E2,E1); 
	    
	}     
   
  for(int det=11;det<21;det++){
    for (int j=minX;j<maxX;j=j+2){  
    ScaleChan2Ener(det,scale1,scale2);
ps->NewPage();
c->cd();
test->Draw();
c->Update();
}
  }
  return analysis;
} 


void Ecalib()
{
 
 TH1D *test;
 test = new TH1D("test","",95,0,190);

 for (int det=1;det<21;det++){
   sprintf(cha[1],"det%dchan",det);
   sprintf(cha[2],"Chan%d vs Chan%d",det,opposit(det));
   E1E2[det] = new TH2D (cha[1],cha[2],95,0,190,95,0,190);
}

 TTree *tree=0;
 breakup *t=new breakup(tree); 
 int i=0;int indic=1;
 while(indic==1)
     
   {
     indic=!(t->Analysis(i,NEvents+i,29));      
     indic=0;
     i+=NEvents; 
   }

 ps->Close();

 
 
 
 
}





















