/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
* Author: The ALICE Off-line Project. *
* Contributors are mentioned in the code where appropriate. *
* *
* Permission to use, copy, modify and distribute this software and its *
* documentation strictly for non-commercial purposes is hereby granted *
* without fee, provided that the above copyright notice appears in all *
* copies and that both the copyright notice and this permission notice *
* appear in the supporting documentation. The authors make no claims *
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
/* $Id$ */
//_________________________________________________________________________
// A Particle modified by PHOS response and produced by AliPHOSvFast
// To become a general class of AliRoot ?
//
//*-- Author: Yves Schutz (SUBATECH)
// --- ROOT system ---
// --- Standard library ---
#include <iostream>
// --- AliRoot header files ---
#include "AliPHOSFastRecParticle.h"
#include "TPad.h"
#include "TPaveText.h"
ClassImp(AliPHOSFastRecParticle)
//____________________________________________________________________________
AliPHOSFastRecParticle::AliPHOSFastRecParticle(const AliPHOSFastRecParticle & rp)
{
// copy ctor
fType = rp.fType ;
fPdgCode = rp.fPdgCode;
fStatusCode = rp.fStatusCode;
fMother[0] = rp.fMother[0];
fMother[1] = rp.fMother[1];
fDaughter[0] = rp.fDaughter[0];
fDaughter[1] = rp.fDaughter[1];
fWeight = rp.fWeight;
fCalcMass = rp.fCalcMass;
fPx = rp.fPx;
fPy = rp.fPy;
fPz = rp.fPz;
fE = rp.fE;
fVx = rp.fVx;
fVy = rp.fVy;
fVz = rp.fVz;
fVt = rp.fVt;
fPolarTheta = rp.fPolarTheta;
fPolarPhi = rp.fPolarPhi;
fParticlePDG = rp.fParticlePDG;
}
//____________________________________________________________________________
AliPHOSFastRecParticle::AliPHOSFastRecParticle(const TParticle & pp)
{
// ctor from a TParticle (crummy?!)
TParticle & pnoconst = const_cast<TParticle &>(pp) ;
AliPHOSFastRecParticle & p = static_cast<AliPHOSFastRecParticle&>(pnoconst) ;
fPdgCode = p.fPdgCode;
fStatusCode = p.fStatusCode;
fMother[0] = p.fMother[0];
fMother[1] = p.fMother[1];
fDaughter[0] = p.fDaughter[0];
fDaughter[1] = p.fDaughter[1];
fWeight = p.fWeight;
fCalcMass = p.fCalcMass;
fPx = p.fPx;
fPy = p.fPy;
fPz = p.fPz;
fE = p.fE;
fVx = p.fVx;
fVy = p.fVy;
fVz = p.fVz;
fVt = p.fVt;
fPolarTheta = p.fPolarTheta;
fPolarPhi = p.fPolarPhi;
fParticlePDG = p.fParticlePDG;
}
//____________________________________________________________________________
Int_t AliPHOSFastRecParticle::DistancetoPrimitive(Int_t px, Int_t py)
{
// Compute distance from point px,py to a AliPHOSFastRecParticle considered as a Tmarker
// Compute the closest distance of approach from point px,py to this marker.
// The distance is computed in pixels units.
Double_t kRADDEG = 180. / TMath::Pi() ;
Coord_t x = Phi() * kRADDEG ;
Coord_t y = Theta() * kRADDEG ;
const Int_t kMaxDiff = 10;
Int_t pxm = gPad->XtoAbsPixel(x);
Int_t pym = gPad->YtoAbsPixel(y);
Int_t dist = (px-pxm)*(px-pxm) + (py-pym)*(py-pym);
if (dist > kMaxDiff) return 9999;
return dist;
}
//___________________________________________________________________________
void AliPHOSFastRecParticle::Draw(Option_t *option)
{
// Draw this AliPHOSFastRecParticle with its current attributes
AppendPad(option);
}
//______________________________________________________________________________
void AliPHOSFastRecParticle::ExecuteEvent(Int_t event, Int_t px, Int_t py)
{
// Execute action corresponding to one event
// This member function is called when a AliPHOSFastRecParticle is clicked with the locator
if (!gPad->IsEditable())
return ;
static TPaveText * clustertext = 0 ;
switch (event) {
case kButton1Down: {
Double_t kRADDEG = 180. / TMath::Pi() ;
Coord_t x = Phi() * kRADDEG ;
Coord_t y = Theta() * kRADDEG ;
clustertext = new TPaveText(x-1, y+1, x+5, y+3, "") ;
Text_t line1[40] ;
Text_t line2[40] ;
sprintf( line1, "PID: %s ", (const char*)Name() ) ;
sprintf( line2, "ENERGY: %f ", Energy() ) ;
clustertext ->AddText(line1) ;
clustertext ->AddText(line2) ;
clustertext ->Draw("");
gPad->Update() ;
break ;
}
case kButton1Up: {
delete clustertext ;
clustertext = 0 ;
gPad->Update() ;
break ;
}
}
}
//____________________________________________________________________________
Int_t * AliPHOSFastRecParticle::GetPrimaries(Int_t & number)
{
// Retrieves the unique primary particle at the origine of the present reconstruced particle
number = 1 ;
Int_t * list = new Int_t[1] ;
list[0] = fPrimary ;
return list ;
}
//____________________________________________________________________________
TString AliPHOSFastRecParticle::Name()
{
// Returns the name of the particle type
TString name ;
switch (fType) {
case kGAMMA:
name = "PHOTON" ;
break ;
case kELECTRON:
name = "ELECTRON" ;
break ;
case kNEUTRAL:
name = "NEUTRAL" ;
break ;
case kCHARGEDHADRON:
name = "CHARGED HADRON" ;
break ;
case kNEUTRALHADRON:
name = "NEUTRAL HADRON" ;
break ;
case kNEUTRALEM:
name = "NEUTRAL EM" ;
break ;
case kGAMMAHADRON:
name = "PHOTON HADRON" ;
break ;
}
return name ;
}
//______________________________________________________________________________
void AliPHOSFastRecParticle::Paint(Option_t *)
{
// Paint this ALiRecParticle in theta,phi coordinate as a TMarker with its current attributes
Double_t kRADDEG = 180. / TMath::Pi() ;
Coord_t x = Phi() * kRADDEG ;
Coord_t y = Theta() * kRADDEG ;
Color_t markercolor = 1 ;
Size_t markersize = 1. ;
Style_t markerstyle = 5 ;
if (!gPad->IsBatch()) {
gVirtualX->SetMarkerColor(markercolor) ;
gVirtualX->SetMarkerSize (markersize) ;
gVirtualX->SetMarkerStyle(markerstyle) ;
}
gPad->SetAttMarkerPS(markercolor,markerstyle,markersize) ;
gPad->PaintPolyMarker(1,&x,&y,"") ;
}
//____________________________________________________________________________
void AliPHOSFastRecParticle::Print()
{
// Print the typr, energy and momentum
cout << "AliPHOSFastRecParticle > " << "type is " << Name() << endl
<< " " << "Energy = " << fE << endl
<< " " << "Px = " << fPx << endl
<< " " << "Py = " << fPy << endl
<< " " << "Pz = " << fPz << endl ;
}
ROOT page - Class index - 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.