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

TrgmpStraw Class Reference

List of all members.

Public Member Functions

void Make_Trk ()
double Fitting (short int)
int Verify (short int, int)

Public Attributes

Track Traccia [MAXTRACK]
Track TrkNow
int charge_all
int ntrk_done
struct {
   int   id [MAXTRACK]
   int   mask [MAXTRACK]
   int   camere [MAXTRACK]
   int   single [MAXTRACK]
   int   usepl [MAXTRACK]
   int   ic0 [MAXTRACK]
   int   ic1 [MAXTRACK]
   int   ic2 [MAXTRACK]
   int   ic3 [MAXTRACK]
   float   zbyy [MAXTRACK]
   float   zbyx [MAXTRACK]
   float   chiq [MAXTRACK]
   float   charge [MAXTRACK]
   float   xmg [MAXTRACK]
   float   ymg [MAXTRACK]
   float   p [MAXTRACK]
   float   py [MAXTRACK]
   float   pxin [MAXTRACK]
   float   pzin [MAXTRACK]
   float   pxout [MAXTRACK]
   float   pzout [MAXTRACK]
   float   xhodx [MAXTRACK]
   float   yhodx [MAXTRACK]
   float   xlkr [MAXTRACK]
   float   ylkr [MAXTRACK]
Trk2Root

Detailed Description

Definition at line 32 of file trgmpstraw.h.


Member Function Documentation

void TrgmpStraw::Make_Trk ( )

here find track,,,

Definition at line 61 of file trgmpstraw.cpp.

{

    static int codemask[16]={0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4};

    int c0ok,c1ok,c2ok,c3ok, nchamb,nsingle;
    int c0flag[30],c1flag[30],c2flag[30],c3flag[30];     // flags to kill the used cluster
    for (int i=0;i<30;i++)c0flag[i]=c1flag[i]=c2flag[i]=c3flag[i]=1;// flags set

    double chicut=3.;
    ntrk=-1;


    // Find the  Cluster number  in straw chambers..

    ncls0=ncls1=ncls2=ncls3=0;
    if ( pcl0!=0 ) ncls0=pcl0->nclust+1;
    if ( pcl1!=0 ) ncls1=pcl1->nclust+1;
    if ( pcl2!=0 ) ncls2=pcl2->nclust+1;
    if ( pcl3!=0 ) ncls3=pcl3->nclust+1;


    int maxcamere=0;// camere coinvolte.
    if (ncls0 >-1) maxcamere++;
    if (ncls1 >-1) maxcamere++;
    if (ncls2 >-1) maxcamere++;
    if (ncls3 >-1) maxcamere++;
    if (maxcamere <3) return; // minimum 3 chambers

    int Single_esiste=pcl0->single_plans+pcl1->single_plans+pcl2->single_plans+pcl3->single_plans;


    for (int VisCam=maxcamere; VisCam>2;VisCam--)
    {
        for (nsingle=0;nsingle<VisCam-1;nsingle++)   // single plan loop
        {
            if (Single_esiste==0&&nsingle>0) continue;

            int Istart=0;
            if (VisCam <4)Istart=-1;

            for ( int ic0=Istart;ic0<ncls0;ic0++)
            {
                c0ok=0;
                if (ic0>-1&&c0flag[ic0]>-1)
                {
                    Hitp[0]= pcl0->Clus[ic0];
                    c0ok=1;// prima camera
                }

                else     Hitp[0].mask=Hitp[0].planes=0;

                for ( int ic1=Istart;ic1<ncls1;ic1++)
                {
                    c1ok=0;
                    if (ic1>-1&&c1flag[ic1]>-1)  {
                        Hitp[1]= pcl1->Clus[ic1];
                        c1ok=2;  // seconda camera

                    }
                    else   Hitp[1].mask=Hitp[1].planes=0;


                    for ( int ic2=Istart;ic2<ncls2;ic2++)
                    {
                        c2ok=0;
                        if (ic2>-1&&c2flag[ic2]>-1)  {
                            Hitp[2]= pcl2->Clus[ic2];
                            c2ok=4; // terza camera
                        }
                        else    Hitp[2].mask=Hitp[2].planes=0;

                        for ( int ic3=Istart;ic3<ncls3;ic3++)
                        {
                            c3ok=0;
                            if (ic3>-1&&c3flag[ic3]>-1)  {
                                Hitp[3]= pcl3->Clus[ic3];
                                c3ok=8;
                            }
                            else     Hitp[3].mask=Hitp[3].planes=0;

                            short int mask_cam;
                            mask_cam=c0ok+c1ok+c2ok+c3ok;
                            nchamb=codemask[mask_cam];
                            if (nchamb!=VisCam)  continue; // no  enough active chamber

//verifica della configurazione per trattare i cluster con un piano
                             TrkNow.used_plans=0;
                            if (Single_esiste>0)
                                if (Verify(mask_cam,nsingle)<0) continue;

// fitting  data

                            // double chiq= Fitting(mask_cam,Hitp);

                            double chiq= Fitting(mask_cam);

                            if (Eventi_Fatti==errordebug)
                                Gout<<"\n Ev "<< Eventi_Fatti <<" chiq "<<chiq
                                <<" camere "<< VisCam
                                <<" Single_esite "<<Single_esiste <<" Single "<<nsingle

                                <<" msk "<< Hitp[0].mask  <<" "<< Hitp[1].mask  <<" "<< Hitp[2].mask  <<" "<< Hitp[3].mask
                                <<" Ic.. "<<ic0<<" "<<ic1 <<" "<<ic2 <<" "<<ic3<<flush;


//save track
                            if (chiq>-0.001&&chiq<chicut)
                            {
                                ntrk++;
                                // save traccia

                                Traccia[ntrk]=TrkNow;
                                Traccia[ntrk].id=ntrk;
                                Traccia[ntrk].camere=nchamb;
                                Traccia[ntrk].single=nsingle;
                                Traccia[ntrk].ic0=ic0;
                                Traccia[ntrk].ic1=ic1;
                                Traccia[ntrk].ic2=ic2;
                                Traccia[ntrk].ic3=ic3;
                                if (ic0>-1) {
                                    c0flag[ic0]=-1;
                                    c0ok=0;
                                }
                                if (ic1>-1) {
                                    c1flag[ic1]=-1;
                                    c1ok=0;
                                }
                                if (ic2>-1) {
                                    c2flag[ic2]=-1;
                                    c2ok=0;
                                }
                                if (ic3>-1) {
                                    c3flag[ic3]=-1;
                                    c3ok=0;
                                }
                            }
                        }
                    }
                }
            }
        }
    }


    charge_all=0;

    for (int i=0;i<ntrk+1;i++)
    {
        charge_all+=Traccia[i].charge;

        //  Traccia[i].Print_Trk();

    }

    Track2Root();


}

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