//////////////////////////////////////////////////////////
//                                                      //
//              T49CutEvent Class                       //
//                                                      //
//  Cut on events in T49EventRoot format                //
//                                                      //
//  UpDate: 04.02.2000                                  //
//                                                      //
//  c.markert@gsi.de                                    //
//                                                      //
//////////////////////////////////////////////////////////

#include <TPaveText.h>

#include "T49EventRoot.h"
#include "T49VertexRoot.h"

#include "T49CutEvent.h"

ClassImp(T49CutEvent)

/*
$Log: T49CutEvent.C,v $
 * Revision 1.5  2000/11/09  09:05:17  cblume
 * Inlcuded necessary header files
 *
 * Revision 1.4  2000/02/04  10:56:28  cblume
 * Change in standard vertex-z cut for PbPb
 *
 * Revision 1.3  1999/11/23  13:54:01  cblume
 * Remove files
 *
*/

//______________________________________________________________________________
 T49CutEvent::T49CutEvent():T49Cut()
{ 
  //
  // Default constructor
  //

  Reset();

}

//______________________________________________________________________________
 T49CutEvent::T49CutEvent(const Text_t *name, const Text_t *title)
            :T49Cut(name,title)
{ 
  //
  // Default constructor with name and title
  //

  Reset();

}

//______________________________________________________________________________
 void T49CutEvent::Reset()
{
  //
  // Resets the cut definition and the counters
  //

    fnumevent     = 0;     
    fnumgoodevent = 0; 

    fFlagVertexIflag = kFALSE;
    fFlagVertexX     = kFALSE;
    fFlagVertexY     = kFALSE;
    fFlagVertexZ     = kFALSE;
    fFlagEVeto       = kFALSE;
    fFlagMult        = kFALSE;

    fnVertexIflag = 0;
    fnVertexX     = 0;
    fnVertexY     = 0;
    fnVertexZ     = 0;
    fnEVeto       = 0;
    fnMult        = 0;

}

//______________________________________________________________________________
 void T49CutEvent::SetStandardCutsPP()
{   
  //
  // Sets the standard cuts for p+p events: 
  //          Iflag = 0 or 4 
  //           -1 < vertex-x <    1
  //           -1 < vertex-y <    1
  //         -585 < vertex-z < -574
  //

    SetVertexIflag(0,4);
    SetVertexX(-1,1);
    SetVertexY(-1,1);
    SetVertexZ(-585,-574);  
}

//______________________________________________________________________________
 void T49CutEvent::SetStandardCutsPPb()
{   
  //
  // Sets the standard cuts for p+Pb events:
  //          Iflag = 0, 1 or 4
  //           -1 < vertex-x <    1
  //           -1 < vertex-y <    1
  //         -583 < vertex-z < -577
  //

    SetVertexIflag(0,1,4);
    SetVertexX(-1,1);
    SetVertexY(-1,1);
    SetVertexZ(-583,-577);  
}

//______________________________________________________________________________
 void T49CutEvent::SetStandardCutsPbPb()
{   
  //
  // Sets the standard cuts for central Pb+Pb events:
  //          Iflag = 0
  //           -1 < vertex-x <    1
  //           -1 < vertex-y <    1
  //         -580 < vertex-z < -578   04.02.2000 (mvl) changed from -581 < vertex-z < -579 
  //
 
    SetVertexIflag(0);
    SetVertexX(-1,1);
    SetVertexY(-1,1);
    SetVertexZ(-580,-578);  
}

//______________________________________________________________________________
 void T49CutEvent::SetStandardCutsPbPbMB()
{   
  //
  // Sets the standard cuts for minimum bias Pb+Pb events:
  //          Iflag = 0
  //           -1 < vertex-x <    1
  //           -1 < vertex-y <    1
  //         -585 < vertex-z < -575
  //

    SetVertexIflag(0);
    SetVertexX(-1,1);
    SetVertexY(-1,1);
    SetVertexZ(-585,-575);  
}

//______________________________________________________________________________
 Int_t T49CutEvent::CheckEvent(T49EventRoot *Event)
{
  //
  // Checks whether a given event passes the defined cuts  
  //

    TObjArray     *VtxList;
    T49VertexRoot *vtx;

    fnumevent++;

    if(fFlagMult && (Event->GetNParticles() < fMinMult || Event->GetNParticles() > fMaxMult) )
    {
      if(fVerbose)
	printf("Event not accepted  Mult %d. n",Event->GetNParticles());
      fnMult++;
      return kFALSE;
    } 
  
    if(fFlagVertexIflag)
    {
       VtxList = Event->GetVertices();
       if(VtxList->GetEntries() > 0)  // number of vertices > 0
       {
         vtx = (T49VertexRoot *) VtxList->First();                 
         if(vtx->GetIflag() != fN1VertexIflag && 
            vtx->GetIflag() != fN2VertexIflag && 
            vtx->GetIflag() != fN3VertexIflag)
         {
           if(fVerbose)
             printf("Event not accepted VertexIflag = %d n",vtx->GetIflag());
           fnVertexIflag++;
           return kFALSE;
         }
      }
    }
    if(fFlagVertexX && (Event->GetVertexX() < fMinVertexX || Event->GetVertexX() > fMaxVertexX) )
    {
      if(fVerbose)
	printf("Event not accepted  VertexX = %f n",Event->GetVertexX());
      fnVertexX++;
      return kFALSE;
    }
    if(fFlagVertexY && (Event->GetVertexY() < fMinVertexY || Event->GetVertexY() > fMaxVertexY) )
    {
      if(fVerbose)
	printf("Event not accepted  VertexY = %f n",Event->GetVertexY());
      fnVertexY++;
      return kFALSE;
    }
    if(fFlagVertexZ && (Event->GetVertexZ() < fMinVertexZ || Event->GetVertexZ() > fMaxVertexZ) )
    {
      if(fVerbose)
	printf("Event not accepted  VertexZ = %f n",Event->GetVertexZ());
      fnVertexZ++;
      return kFALSE;
    }
    if(fFlagEVeto && (Event->GetEveto() < fMinEVeto || Event->GetEveto() > fMaxEVeto) )
    {
      if(fVerbose)
	printf("Event not accepted  EVeto = %f n",Event->GetEveto());
      fnEVeto++;
      return kFALSE;
    }
   
    fnumgoodevent++;
    return kTRUE;

}

//______________________________________________________________________________
 TPaveText  *T49CutEvent::GetCutList()
{
  //
  // Creates a TPaveText with the defined cuts and the cut-statistics
  //

  TPaveText *pave      = new TPaveText(0,0,1,1);
 
   Char_t         hname[256]; 

   sprintf(hname,"total number of events : %d n",fnumevent);  
   pave->AddText(hname);

   sprintf(hname,"number of events accepted : %d n",fnumgoodevent);  
   pave->AddText(hname);

  if(fFlagMult)
   {     
      sprintf(hname,"SetMult(%d,%d) : %d n", fMinMult, fMaxMult,fnMult);
      pave->AddText(hname);
   }
   if(fFlagVertexIflag)
   { 
      if(fN2VertexIflag!= 99 && fN3VertexIflag != 99)      
         sprintf(hname,"SetVertexIflag(%d,%d,%d) : %d n",fN1VertexIflag
                                                         ,fN2VertexIflag
                                                         ,fN3VertexIflag
                                                         ,fnVertexIflag);  
      if(fN2VertexIflag!= 99 && fN3VertexIflag == 99)      
         sprintf(hname,"SetVertexIflag(%d,%d) : %d n",fN1VertexIflag
                                                      ,fN2VertexIflag
                                                      ,fnVertexIflag);  
      if(fN2VertexIflag== 99 && fN3VertexIflag == 99)      
         sprintf(hname,"SetVertexIflag(%d) : %d n",fN1VertexIflag
                                                   ,fnVertexIflag);  
      
      pave->AddText(hname);
   }
   if(fFlagVertexX)
   {
      sprintf(hname,"SetVertexX(%f,%f) : %d n", fMinVertexX, fMaxVertexX,fnVertexX);
      pave->AddText(hname);
   }
   if(fFlagVertexY)
   {
      sprintf(hname,"SetVertexY(%f,%f) : %d n", fMinVertexY, fMaxVertexY,fnVertexY);
      pave->AddText(hname);
   }
   if(fFlagVertexZ)
   {
      sprintf(hname,"SetVertexZ(%f,%f) : %d n", fMinVertexZ, fMaxVertexZ, fnVertexZ);
      pave->AddText(hname);
   }
   if(fFlagEVeto)
   {
      sprintf(hname,"SetEVeto(%f,%f) : %d n", fMinEVeto, fMaxEVeto,fnEVeto);
      pave->AddText(hname);
   }
    return pave;
}

//______________________________________________________________________________
 void  T49CutEvent::PrintCutList()
{
  //
  // Prints the defined cuts and the cut-statistic
  //

    GetCutList()->Print();
}














ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.