FlyoDoc_2011 Pisa 2011 by GmP --- 011
Classes | Public Member Functions

CrossMat Class Reference

#include <crossmat.h>

List of all members.

Classes

struct  Cross

Public Member Functions

double CrossAdd (float, float, float, float)
void CrossPrint ()
void CrossList (const char *)
 =========================================

Detailed Description

Calcolo della matrice di crossing .. per lo studio del CUPS

Author:
Giuseppe Pierazzini

Definition at line 16 of file crossmat.h.


Member Function Documentation

double CrossMat::CrossAdd ( float  gss_sort,
float  gvss_sort,
float  ss_sort,
float  vss_sort 
)

generate the crossed resolution matrix...gss,gvss in recon.-> iss,ivss Virtual Cross matrice [84x42x84x42] Con i parametri su definiti vedi anche in outnt.cpp

gss and gvss indici derivati dai valori generati iss and ivss indici derivati dai valori ricostruiti

Definition at line 39 of file crossmat.cpp.

{




  int gss,gvss,iss,ivss;
  gss= ( gss_sort-ss_xmin ) /stepss;
  gvss= gvss_sort/stepvss;
  iss= ( ss_sort-ss_xmin ) /stepss;
  ivss= vss_sort/stepvss;

// get out if out of range


  if ( gss<0  ||gss>83 ) return 1000.;
  if ( gvss<0 ||gvss>41 ) return 1000.;
  if ( iss<0  ||iss>83 ) return 1000.;
  if ( ivss<0 ||ivss>41 ) return 1000.;

 
// ok
  dati++;
// memorizza  i dati di generazione

  int gi = gss+gvss*84;

  Cross *pg=Elem[gi];  // indice pg del Cross di generazione.....
  if ( pg==0 )         // se non esiste si crea....
  {
    Elem[gi]=pg=new Cross();
    pg->i=gss;pg->j=gvss;
    pg->n=1;
    pg->next=0;
    pg->dist=0.0;
//    Gout<<"\n elem "<<dati<<"  "<<gi<<"  "<<pg->i<<" " <<pg->j<<"  "<<iss<< "  "
//    <<ivss<< "  " <<endl;
  }
  else pg->n++;  // se esiste si incrementa solo


// memorizza gli indici di ricostruzione
  // per distanza dei canali Generato-ricostruito
  double dss = gss-iss; double dvs=gvss-ivss;

  Cross *plast;
  Cross *px=pg->next;  // punto al secondo Cross ...dati ricostruito...

  if ( px==0 )  // non esiste  ne creo uno nuovo....
  {
    pg->next=px=new Cross();
    px->i=iss;px->j=ivss;
    px->n=1;
    px->next=0;
    px->dist=sqrt ( dss*dss+dvs*dvs );
  }

  else if ( px!=0 )
  {
    while ( px ) //test su tutti i Cross collegati a pg....
    {
      if ( px->i==iss&&px->j==ivss )
      {
        px->n++;
        break;
      }
// se non sono uscito continuo...
      plast=px;
      px=px->next;

    }
// se non ho trovato....px รจ ancora  nullo...
    if ( px==0 )  // non esiste  ancora ne creo uno nuovo....
    {
      plast->next=px=new Cross();
      px->i=iss;px->j=ivss;
      px->n=1;
      px->next=0;
      px->dist=sqrt ( dss*dss+dvs*dvs );

    }
  }

  return px->dist;

}
void CrossMat::CrossList ( const char *  Res)

=========================================

Definition at line 163 of file crossmat.cpp.

{
  char *LisDat=new char[256];
  char ListaOut[256];
  std::ofstream Lout;
 
  sprintf ( LisDat,"%s_%d.dat",Res,evento_.Gen.Run );
  
  string AuxLis;AuxLis=LisDat;
  check_file_name ( OutDir,AuxLis );
  sprintf ( ListaOut,"%s/%s",OutDir,AuxLis.c_str() );  // Flyo running

  Lout.open ( ListaOut,ios::out );
  Cross *px,*pg;

  int gi=0;
  Gout <<"\n Crossmat  listing summary  Run "
  <<"  totali eventi "<< setw ( 9 ) << dati<<endl;
  Lout <<"\n Crossmat  listing summary  Run "
      <<"  totali eventi "<< setw ( 9 ) << dati<<endl;
  for ( int kss=0;kss<84;kss++ )
  {
    for ( int kvss=0;kvss<42;kvss++ )
    {

      gi =kss+kvss*84;
      pg=Elem[gi];
      if ( pg==0 ) continue;

      px= pg->next;
      while ( px!=0 )
      {

        Lout <<"\n "<< setw ( 3 ) << pg->i+1
        << " "<< setw ( 3 ) <<pg->j+1
        << setw ( 3 ) << px->i+1
        << " "<< setw ( 3 ) <<px->j+1
        << "  "<< setw ( 6 ) << px->n <<setprecision ( 2 )
        << "  "<< setw ( 5 ) << px->dist;
        px=px->next;

      }



    }


  }




}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables