ROOT logo
#include "KMesh.h"
#include "TMath.h"

ClassImp(KMesh)
//////////////////////////////////////////////////////////////////////////
//                                                                      //
// KMesh                                                                //
// A mesh generator for the non-equividistant bins                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


Int_t KMesh::GetBins(Int_t Num, Float_t SS, Float_t ES, Float_t *Bins)
{

 Float_t dX=(Max-Min)/Num;
 Float_t dS=(SS-ES)/(Num-1);
 Float_t dSi, SumS=0;
 Int_t Ni=0,k=0; 
 Bins[0]=0;
 N=0;
 printf("Steps=%d, SumS=%f \n",k,SumS); k++;
 for(Int_t i=0;i<Num;i++)
   {
     dSi=SS-i*dS;
     Ni=TMath::Nint(dX/dSi);
     printf("New region : %d %d %f\n",i,Ni,dSi);
     for(Int_t j=0;j<Ni;j++) 
       {
	  SumS+=dSi; Bins[k]=SumS;
	  if(Bins[k]>Max) {Bins[k]=Max; printf("END\n"); break;}
	  printf("Steps=%d, SumS=%f \n",k,Bins[k]);
	 k++;

       }
   }
 if(Bins[k-1]<Max) {Bins[k]=Max;  printf("Steps=%d, SumS=%f \n",k,Bins[k]); };

 return k;

}


Int_t KMesh::GetBins(Int_t size,Float_t *Pos, Float_t *Step, Float_t *Bins)
{
  Float_t N[100];
  Int_t num,NN=0,i,j,k;
  for(i=0;i<size;i++)
    {
      //      if(i>0) N[i]=(Pos[i]-Pos[i-1])/Step[i]; else 
      N[i]=Pos[i]/Step[i];
      if(N[i]!=TMath::Nint(N[i])) {printf("Step size not integer ...\n"); return -1;} 
      else
	NN+=(Int_t)N[i];
    }
  printf("%d \n",NN);
  //  Bins=new Float_t [NN+1];
   
  Bins[0]=0; k=1;
  for(i=0;i<size;i++)
    {
      for(j=0;j<N[i];j++)
	{

	  Bins[k]=Bins[k-1]+Step[i];
	  printf("%d %f\n",k,Bins[k]);
	  k++;
	}
    }

  return NN;
}
 KMesh.cxx:1
 KMesh.cxx:2
 KMesh.cxx:3
 KMesh.cxx:4
 KMesh.cxx:5
 KMesh.cxx:6
 KMesh.cxx:7
 KMesh.cxx:8
 KMesh.cxx:9
 KMesh.cxx:10
 KMesh.cxx:11
 KMesh.cxx:12
 KMesh.cxx:13
 KMesh.cxx:14
 KMesh.cxx:15
 KMesh.cxx:16
 KMesh.cxx:17
 KMesh.cxx:18
 KMesh.cxx:19
 KMesh.cxx:20
 KMesh.cxx:21
 KMesh.cxx:22
 KMesh.cxx:23
 KMesh.cxx:24
 KMesh.cxx:25
 KMesh.cxx:26
 KMesh.cxx:27
 KMesh.cxx:28
 KMesh.cxx:29
 KMesh.cxx:30
 KMesh.cxx:31
 KMesh.cxx:32
 KMesh.cxx:33
 KMesh.cxx:34
 KMesh.cxx:35
 KMesh.cxx:36
 KMesh.cxx:37
 KMesh.cxx:38
 KMesh.cxx:39
 KMesh.cxx:40
 KMesh.cxx:41
 KMesh.cxx:42
 KMesh.cxx:43
 KMesh.cxx:44
 KMesh.cxx:45
 KMesh.cxx:46
 KMesh.cxx:47
 KMesh.cxx:48
 KMesh.cxx:49
 KMesh.cxx:50
 KMesh.cxx:51
 KMesh.cxx:52
 KMesh.cxx:53
 KMesh.cxx:54
 KMesh.cxx:55
 KMesh.cxx:56
 KMesh.cxx:57
 KMesh.cxx:58
 KMesh.cxx:59
 KMesh.cxx:60
 KMesh.cxx:61
 KMesh.cxx:62
 KMesh.cxx:63
 KMesh.cxx:64
 KMesh.cxx:65
 KMesh.cxx:66
 KMesh.cxx:67
 KMesh.cxx:68
 KMesh.cxx:69
 KMesh.cxx:70
 KMesh.cxx:71
 KMesh.cxx:72