ROOT logo
AliRoot » ITS » AliITSTrackleterSPDEff

class AliITSTrackleterSPDEff: public AliTracker

Function Members (Methods)

public:
AliITSTrackleterSPDEff()
virtual~AliITSTrackleterSPDEff()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tClusters2Tracks(AliESDEvent* esd)
virtual Int_tAliTracker::Clusters2TracksHLT(AliESDEvent* event, const AliESDEvent*)
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidAliTracker::CookLabel(AliKalmanTrack* t, Float_t wrong) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual voidAliTracker::FillClusterArray(TObjArray* array) const
static voidAliTracker::FillResiduals(const AliExternalTrackParam* t, const AliCluster* c, Bool_t updated = kTRUE)
static voidAliTracker::FillResiduals(const AliExternalTrackParam* t, Double_t* p, Double_t* cov, UShort_t id, Bool_t updated = kTRUE)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
static Double_tAliTrackerBase::FitTrack(AliExternalTrackParam* trackParam, AliTrackPointArray* pointArray, Double_t mass, Double_t maxStep)
static voidAliTrackerBase::GetBxByBz(const Double_t* r, Double_t* b)
static Double_tAliTrackerBase::GetBz()
static Double_tAliTrackerBase::GetBz(const Double_t* r)
virtual AliCluster*GetCluster(Int_t) const
Float_t*GetClusterLayer1(Int_t n)
Float_t*GetClusterLayer2(Int_t n)
Int_tGetClusterPrimary(const UInt_t key) const
Int_tGetClusterPrimary(const UInt_t mod, const UInt_t chip) const
Int_tGetClusterSecondary(const UInt_t key) const
Int_tGetClusterSecondary(const UInt_t mod, const UInt_t chip) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
const AliEventInfo*AliTracker::GetEventInfo() const
Int_tGetFailureP(const UInt_t key) const
Int_tGetFailureP(const UInt_t mod, const UInt_t chip) const
Int_tGetFailureS(const UInt_t key) const
Int_tGetFailureS(const UInt_t mod, const UInt_t chip) const
Bool_tGetHistOn() const
virtual const char*TObject::GetIconName() const
Bool_tGetLightBkgStudyInParallel() const
Bool_tGetMC() const
virtual const char*TObject::GetName() const
Int_tGetNClustersLayer1() const
Int_tGetNClustersLayer2() const
Int_tGetNonRecons(const UInt_t key) const
Int_tGetNonRecons(const UInt_t mod, const UInt_t chip) const
Int_tGetNTracklets() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual AliPlaneEff*GetPlaneEff()
AliITSPlaneEffSPD*GetPlaneEffSPD() const
Int_tGetPredictionPrimary(const UInt_t key) const
Int_tGetPredictionPrimary(const UInt_t mod, const UInt_t chip) const
Int_tGetPredictionSecondary(const UInt_t key) const
Int_tGetPredictionSecondary(const UInt_t mod, const UInt_t chip) const
Int_tGetRecons(const UInt_t key) const
Int_tGetRecons(const UInt_t mod, const UInt_t chip) const
static TObjArray**AliTracker::GetResidualsArray()
Double_tAliTrackerBase::GetSigmaX() const
Double_tAliTrackerBase::GetSigmaY() const
Double_tAliTrackerBase::GetSigmaZ() const
Int_tGetSuccessP(const UInt_t key) const
Int_tGetSuccessP(const UInt_t mod, const UInt_t chip) const
Int_tGetSuccessPP(const UInt_t key) const
Int_tGetSuccessPP(const UInt_t mod, const UInt_t chip) const
Int_tGetSuccessS(const UInt_t key) const
Int_tGetSuccessS(const UInt_t mod, const UInt_t chip) const
Int_tGetSuccessTT(const UInt_t key) const
Int_tGetSuccessTT(const UInt_t mod, const UInt_t chip) const
virtual const char*TObject::GetTitle() const
Float_t*GetTracklet(Int_t n)
virtual Bool_tAliTracker::GetTrackPoint(Int_t, AliTrackPoint&) const
virtual Bool_tAliTracker::GetTrackPointTrackingError(Int_t, AliTrackPoint&, const AliESDtrack*)
static Double_tAliTrackerBase::GetTrackPredictedChi2(AliExternalTrackParam* track, Double_t mass, Double_t step, const AliExternalTrackParam* backup)
virtual UInt_tTObject::GetUniqueID() const
Bool_tGetUseOnlyDifferentParticle() const
Bool_tGetUseOnlyPrimaryForPred() const
Bool_tGetUseOnlySameParticle() const
Bool_tGetUseOnlySecondaryForPred() const
Bool_tGetUseOnlyStableParticle() const
Double_tAliTrackerBase::GetX() const
Double_tAliTrackerBase::GetY() const
Double_tAliTrackerBase::GetZ() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual Int_tLoadClusters(TTree* cl)
virtual voidTObject::ls(Option_t* option = "") const
static Double_tAliTrackerBase::MakeC(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3)
static AliExternalTrackParam*AliTrackerBase::MakeSeed(AliTrackPoint& point0, AliTrackPoint& point1, AliTrackPoint& point2)
static Double_tAliTrackerBase::MakeSnp(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3)
static Double_tAliTrackerBase::MakeTgl(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t z1, Double_t z2)
static Double_tAliTrackerBase::MakeTgl(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t z1, Double_t z2, Double_t c)
voidTObject::MayNotUse(const char* method) const
static Double_tAliTrackerBase::MeanMaterialBudget(const Double_t* start, const Double_t* end, Double_t* mparam)
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual Int_tPostProcess(AliESDEvent*)
virtual voidTObject::Print(Option_t* option = "") const
virtual voidPrintAscii(ostream* os) const
virtual Int_tPropagateBack(AliESDEvent*)
static Bool_tAliTrackerBase::PropagateTrackTo(AliExternalTrackParam* track, Double_t x, Double_t m, Double_t maxStep, Bool_t rotateTo = kTRUE, Double_t maxSnp = 0.8, Int_t sign = 0, Bool_t addTimeStep = kFALSE, Bool_t correctMaterialBudget = kTRUE)
static Int_tAliTrackerBase::PropagateTrackTo2(AliExternalTrackParam* track, Double_t x, Double_t m, Double_t maxStep, Bool_t rotateTo = kTRUE, Double_t maxSnp = 0.8, Int_t sign = 0, Bool_t addTimeStep = kFALSE, Bool_t correctMaterialBudget = kTRUE)
static Bool_tAliTrackerBase::PropagateTrackToBxByBz(AliExternalTrackParam* track, Double_t x, Double_t m, Double_t maxStep, Bool_t rotateTo = kTRUE, Double_t maxSnp = 0.8, Int_t sign = 0, Bool_t addTimeStep = kFALSE)
virtual Int_tTObject::Read(const char* name)
virtual voidReadAscii(istream* is)
voidReadPredictionMC(TString filename = "TrackletsMCpred.root")
voidReconstruct(AliStack* pStack = 0x0, TTree* tRef = 0x0, Bool_t lbkg = kFALSE)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Int_tRefitInward(AliESDEvent*)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
voidSavePredictionMC(TString filename = "TrackletsMCpred.root") const
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidAliTracker::SetEventInfo(AliEventInfo* evInfo)
static voidAliTracker::SetFillResiduals(AliRecoParam::EventSpecie_t es, Bool_t flag = kTRUE)
voidSetHistOn(Bool_t his = kTRUE)
voidSetLightBkgStudyInParallel(Bool_t b = kTRUE)
voidSetMC(Bool_t mc = kTRUE)
voidSetMinContVtx(Int_t min = 3)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetOnlyOneTrackletPerC1(Bool_t b = kTRUE)
voidSetOnlyOneTrackletPerC2(Bool_t b = kTRUE)
voidSetPhiWindowL1(Float_t w = 0.08)
voidSetPhiWindowL2(Float_t w = 0.08)
voidSetReflectClusterAroundZAxisForLayer(Int_t ilayer, Bool_t b = kTRUE)
static voidAliTracker::SetResidualsArray(TObjArray** arr)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetUpdateOncePerEventPlaneEff(Bool_t b = kTRUE)
voidSetUseOnlyDifferentParticle(Bool_t flag = kTRUE)
voidSetUseOnlyPrimaryForPred(Bool_t flag = kTRUE)
voidSetUseOnlySameParticle(Bool_t flag = kTRUE)
voidSetUseOnlySecondaryForPred(Bool_t flag = kTRUE)
voidSetUseOnlyStableParticle(Bool_t flag = kTRUE)
voidAliTrackerBase::SetVertex(const Double_t* xyz, const Double_t* ers = 0)
voidSetZetaWindowL1(Float_t w = 1.)
voidSetZetaWindowL2(Float_t w = 1.)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
static Bool_tAliTrackerBase::UniformField()
virtual voidUnloadClusters()
static voidAliTrackerBase::UpdateTrack(AliExternalTrackParam&, const AliExternalTrackParam&)
virtual voidAliTracker::UseClusters(const AliKalmanTrack* t, Int_t from = 0) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
Bool_tWriteHistosToFile(TString filename = "TrackleterSPDHistos.root", Option_t* option = "RECREATE")
protected:
AliITSTrackleterSPDEff(const AliITSTrackleterSPDEff& mr)
voidBookHistos()
voidCallWarningMC() const
Int_tDecayingTrackChecker(Int_t ipart, AliStack* stack = 0x0)
voidDeleteHistos()
voidDeletePredictionMC()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
Bool_tFindChip(UInt_t& key, Int_t layer, const Float_t* vtx, Float_t thetaVtx, Float_t phiVtx, Float_t zVtx = 999.)
Int_tFindDetectorIndex(Int_t layer, Double_t phi, Double_t z)
Bool_tFindIntersectionPolar(Double_t* vtx, Double_t phiVtx, Double_t R, Double_t& phi)
Bool_tFromGloCilToLocCart(Int_t ilayer, Int_t idet, Double_t r, Double_t phi, Double_t z, Float_t& xloc, Float_t& zloc)
Double_tGetRLayer(Int_t layer)
voidInit()
voidInitPredictionMC()
Bool_tIsReconstructableAt(Int_t layer, Int_t iC, Int_t ipart, const Float_t* vtx, const AliStack* stack = 0x0, TTree* ref = 0x0)
voidLoadClusterArrays(TTree* tree)
voidTObject::MakeZombie()
AliITSTrackleterSPDEff&operator=(const AliITSTrackleterSPDEff& mr)
Bool_tPrimaryTrackChecker(Int_t ipart, AliStack* stack = 0x0)
voidReflectClusterAroundZAxisForLayer(Int_t ilayer)
Bool_tSaveHists()
Bool_tSetAngleRange02Pi(Double_t& angle) const
Bool_tSetAngleRange02Pi(Float_t& angle) const

Data Members

protected:
Bool_t*fAssociationFlag! flag for the associations
Bool_t*fAssociationFlag1! flag for the associations (Layer 1)
UInt_t*fChipPredOnLay1! prediction for the chip traversed by the tracklet
UInt_t*fChipPredOnLay2! prediction for the chip traversed by the tracklet
Bool_t*fChipUpdatedInEvent! boolean (chip by chip) to flag which chip has been updated its efficiency
Int_t*fClusterPrimary! number of clusters on a given chip fired by (at least) a primary
Int_t*fClusterSecondary! number of clusters on a given chip fired by (only) secondaries
Float_t**fClustersLay1! clusters in the 1st layer of ITS
Float_t**fClustersLay2! clusters in the 2nd layer of ITS
Int_t*fFailureP! number of failures by using a primary for the prediction (vs. chip of the failure)
Int_t*fFailureS! number of failures by using a secondary for the prediction (vs. chip of the failure)
Bool_tfHistOnOption to define and fill the histograms
Bool_tfLightBkgStudyInParallelif this is kTRUE, the basic and correct evaluation of background is performed
Bool_tfMCBoolean to access Kinematics (only for MC events )
Int_tfMinContVtxminimum number of contributors (tracklets) to the vertex for the event to be used
Int_tfNClustersLay1Number of clusters (Layer1)
Int_tfNClustersLay2Number of clusters (Layer2)
Int_tfNTrackletsNumber of tracklets
Int_tfNTracklets1Number of tracklets layer 1
Int_t*fNonRecons! unmber of particle which cannot be reconstructed (only for MC from TrackRef)
Bool_tfOnlyOneTrackletPerC1only one tracklet per cluster in L. 1
Bool_tfOnlyOneTrackletPerC2Allow only one tracklet per cluster in the outer layer
Float_tfPhiOverlapCutFiducial window in phi for overlap cut
Float_tfPhiWindowL1Search window in phi (Layer 1)
Float_tfPhiWindowL2Search window in phi
AliITSPlaneEffSPD*fPlaneEffBkg! pointer to SPD plane efficiency class for background evaluation
AliITSPlaneEffSPD*fPlaneEffSPD! pointer to SPD plane efficiency class
Int_t*fPredictionPrimary! those for correction of bias from secondaries
Int_t*fPredictionSecondary! chip_by_chip: number of Prediction built with primaries/secondaries
Int_t*fRecons! number of particle which can be reconstructed (only for MC from TrackRef)
Bool_tfReflectClusterAroundZAxisForLayer0if kTRUE, then a 180degree rotation around Z is applied to all
Bool_tfReflectClusterAroundZAxisForLayer1clusters on that layer (x->-x; y->-y)
Int_t*fSuccessP! number of successes by using a primary for the prediction (vs. chip of the success)
Int_t*fSuccessPP! number of successes by using the same primary track (vs. chip of the success)
Int_t*fSuccessS! number of successes by using a secondary for the prediction (vs. chip of the success)
Int_t*fSuccessTT! number of successes by using the same track (either a primary or a secondary) (vs. chip of the success)
Float_t**fTracklets! tracklets
Bool_tfUpdateOncePerEventPlaneEffIf this is kTRUE, then you can update the chip efficiency only once
Bool_tfUseOnlyDifferentParticleOnly for MC: if this is true, assign a success only if clusters from different particles
Bool_tfUseOnlyPrimaryForPredOnly for MC: if this is true, build tracklet prediction using only primary particles
Bool_tfUseOnlySameParticleOnly for MC: if this is true, assign a success only if clusters from same particles
Bool_tfUseOnlySecondaryForPredOnly for MC: if this is true build tracklet prediction using only secondary particles
Bool_tfUseOnlyStableParticleOnly for MC: if this is kTRUE then method PrimaryTrackChecker return kTRUE only
Float_tfZetaOverlapCutFiducial window in eta for overlap cut
Float_tfZetaWindowL1SEarch window in zeta (Layer 1)
Float_tfZetaWindowL2Search window in eta
TH1F*fhClustersDPhiAcc! Phi2 - Phi1 for tracklets
TH1F*fhClustersDPhiAll! Phi2 - Phi1 all the combinations
TH1F*fhClustersDPhiInterpAcc! Phi2 - Phi1 for tracklets (interpolation phase)
TH1F*fhClustersDPhiInterpAll! Phi2 - Phi1 all the combinations (interpolation phase)
TH1F*fhClustersDThetaAcc! Theta2 - Theta1 for tracklets
TH1F*fhClustersDThetaAll! Theta2 - Theta1 all the combinations
TH1F*fhClustersDThetaInterpAcc! Theta2 - Theta1 for tracklets (interpolation phase)
TH1F*fhClustersDThetaInterpAll! Theta2 - Theta1 all the combinations (interpolation phase)
TH1F*fhClustersDZetaAcc! z2 - z1projected for tracklets
TH1F*fhClustersDZetaAll! z2 - z1projected all the combinations
TH1F*fhClustersDZetaInterpAcc! z2 - z1projected for tracklets (interpolation phase)
TH1F*fhClustersDZetaInterpAll! z2 - z1projected all the combinations (interpolation phase)
TH1F*fhClustersInChip! number of fired clusters versus chip number [0,1199]
TH2F**fhClustersInModuleLay1! distribution of cluster in the module Lay 1 (sub-chip scale)
TH2F**fhClustersInModuleLay2! distribution of cluster in the module Lay 2 (sub-chip scale)
TH2F*fhDPhiVsDThetaAcc! same plot for tracklets
TH2F*fhDPhiVsDThetaAll! 2D plot for all the combinations
TH2F*fhDPhiVsDThetaInterpAcc! same plot for tracklets
TH2F*fhDPhiVsDThetaInterpAll! 2D plot for all the combinations
TH2F*fhDPhiVsDZetaAcc! same plot for tracklets
TH2F*fhDPhiVsDZetaAll! 2d plot for all the combination
TH2F*fhDPhiVsDZetaInterpAcc! same plot for tracklets
TH2F*fhDPhiVsDZetaInterpAll! 2d plot for all the combination
TH1F*fhetaClustersLay1! Pseudorapidity distr. for Clusters L. 1
TH1F*fhetaClustersLay2! Pseudorapidity distr. for Clusters L. 2
TH1F*fhetaTracklets! Pseudorapidity distr. for tracklets
TH1F*fhphiClustersLay1! Azimuthal (Phi) distr. for Clusters L. 1
TH1F*fhphiClustersLay2! Azimuthal (Phi) distr. for Clusters L. 2
TH1F*fhphiTracklets! Azimuthal (Phi) distr. for tracklets

Class Charts

Inheritance Chart:
TObject
AliTrackerBase
AliTracker
AliITSTrackleterSPDEff

Function documentation

AliITSTrackleterSPDEff()

 default constructor
 from AliITSMultReconstructor
void Init()
AliITSTrackleterSPDEff(const AliITSTrackleterSPDEff& mr)
 from AliITSMultReconstructor

 Copy constructor
AliITSTrackleterSPDEff& operator=(const AliITSTrackleterSPDEff& mr)
 Assignment operator
~AliITSTrackleterSPDEff()
 Destructor
 from AliITSMultReconstructor
 delete arrays
Reconstruct(AliStack* pStack = 0x0, TTree* tRef = 0x0, Bool_t lbkg = kFALSE)
 - you have to take care of the following, before of using Reconstruct
   1) call LoadClusters(TTree* cl) that finds the position of the clusters (in global coord)
   and  convert the cluster coordinates to theta, phi (seen from the
   interaction vertex).
   2) call SetVertex(vtxPos, vtxErr) which set the position of the vertex
 - Find the extrapolation/interpolation point.
 - Find the chip corresponding to that
 - Check if there is a cluster near that point

 reset counters
Bool_t FindChip(UInt_t& key, Int_t layer, const Float_t* vtx, Float_t thetaVtx, Float_t phiVtx, Float_t zVtx = 999.)
 Input: a) layer number in the range [0,1]
        b) vtx[3]: actual vertex
        c) zVtx     \ z of the cluster (-999 for tracklet) computed with respect to vtx
        d) thetaVtx  > theta and phi of the cluster/tracklet computed with respect to vtx
e) phiVtx
 Output: Unique key to locate a chip
 return: kTRUE if succesfull
{AliWarning("Wrong layer: should be 0 or 1!"); return kFALSE;}
Double_t GetRLayer(Int_t layer)
  Return the average radius of a layer from Geometry

Bool_t FromGloCilToLocCart(Int_t ilayer, Int_t idet, Double_t r, Double_t phi, Double_t z, Float_t& xloc, Float_t& zloc)
 this method transform Global Cilindrical coordinates into local (i.e. module)
 cartesian coordinates

Compute Cartesian Global Coordinate
Int_t FindDetectorIndex(Int_t layer, Double_t phi, Double_t z)
 This function finds the detector crossed by the track
 Input: layer in range [0,1]
        phi   in ALICE absolute reference system
         z     "  "       "         "        "

Bool_t FindIntersectionPolar(Double_t* vtx, Double_t phiVtx, Double_t R, Double_t& phi)
 this method find the intersection in xy between a tracklet (straight line) and
 a circonference (r=R), using polar coordinates.

Input: - vtx[2]: actual vertex w.r.t. ALICE reference system
       - phiVtx: phi angle of the line (tracklet) computed w.r.t. vtx
       - R: radius of the circle
Output: - phi : phi angle of the unique interception in the ALICE Global ref. system

Correct method below: you have the equation of a circle (in polar coordinate) w.r.t. Actual vtx:
r^2-2*r*r0*cos(phi-phi0) + r0^2 = R^2 , where (r0,phi0) is the centre of the circle
In the same system, the equation of a semi-line is: phi=phiVtx;
Hence you get one interception only: P=(r,phiVtx)
Finally you want P in the ABSOLUTE ALICE reference system.

Bool_t SetAngleRange02Pi(Double_t& angle) const
  simple method to reduce all angles (in rad)
  in range [0,2pi[


Bool_t PrimaryTrackChecker(Int_t ipart, AliStack* stack = 0x0)
  This method check if a particle is primary; i.e.
  it comes from the main vertex and it is a "stable" particle, according to
  AliStack::IsPhysicalPrimary() (note that there also Sigma0 are considered as
  a stable particle: it has no effect on this analysis).
  This method can be called only for MC events, where Kinematics is available.
  if fUseOnlyStableParticle is kTRUE (via SetUseOnlyStableParticle) then it
  returns kTRUE if also AliITSTrackleterSPDEff::DecayingTrackChecker() return 0.
  The latter (see below) try to verify if a primary particle is also "detectable".

Int_t DecayingTrackChecker(Int_t ipart, AliStack* stack = 0x0)
 This private method can be applied on MC particles (if stack is available),
 provided they have been identified as "primary" from PrimaryTrackChecker() (see above).

 It define "detectable" a primary particle according to the following criteria:

 - if no decay products can be found in the stack (note that this does not
     means it is stable, since a particle is stored in stack if it has at least 1 hit in a
     sensitive detector)
 - if it has at least one decay daughter produced outside or just on the outer pixel layer
 - if the last decay particle is an electron (or a muon) which is not produced in-between
     the two pixel layers (this is likely to be a kink).
void InitPredictionMC()
 this method allocate memory for the MC related informations
 all the counters are set to 0


void DeletePredictionMC()
 this method deallocate memory for the MC related informations
 all the counters are set to 0


Int_t GetPredictionPrimary(const UInt_t key) const
 This method return the Data menmber fPredictionPrimary [1200].
 You can call it only for MC events.
 fPredictionPrimary[key] contains the number of tracklet predictions on the
 given chip key built using  a cluster on the other layer produced (at least)
 from a primary particle.
 Key refers to the chip crossed by the prediction


Int_t GetPredictionSecondary(const UInt_t key) const
 This method return the Data menmber fPredictionSecondary [1200].
 You can call it only for MC events.
 fPredictionSecondary[key] contains the number of tracklet predictions on the
 given chip key built using  a cluster on the other layer produced (only)
 from a secondary particle
 Key refers to the chip crossed by the prediction


Int_t GetClusterPrimary(const UInt_t key) const
 This method return the Data menmber fClusterPrimary [1200].
 You can call it only for MC events.
 fClusterPrimary[key] contains the number of tracklet predictions
 built using  a cluster on that layer produced (only)
 from a primary particle
 Key refers to the chip used to build the prediction


Int_t GetClusterSecondary(const UInt_t key) const
 This method return the Data menmber fClusterSecondary [1200].
 You can call it only for MC events.
 fClusterSecondary[key] contains the number of tracklet predictions
 built using  a cluster on that layer produced (only)
 from a secondary particle
 Key refers to the chip used to build the prediction

Int_t GetSuccessPP(const UInt_t key) const
 This method return the Data menmber fSuccessPP [1200].
 You can call it only for MC events.
 fSuccessPP[key] contains the number of successes (i.e. a tracklet prediction matching
 with a cluster on the other layer) built by using the same primary particle
 the unique chip key refers to the chip which get updated its efficiency

Int_t GetSuccessTT(const UInt_t key) const
 This method return the Data menmber fSuccessTT [1200].
 You can call it only for MC events.
 fSuccessTT[key] contains the number of successes (i.e. a tracklet prediction matching
 with a cluster on the other layer) built by using the same  particle (whatever)
 the unique chip key refers to the chip which get updated its efficiency

Int_t GetSuccessS(const UInt_t key) const
 This method return the Data menmber fSuccessS [1200].
 You can call it only for MC events.
 fSuccessS[key] contains the number of successes (i.e. a tracklet prediction matching
 with a cluster on the other layer) built by using a secondary particle
 the unique chip key refers to the chip which get updated its efficiency

Int_t GetSuccessP(const UInt_t key) const
 This method return the Data menmber fSuccessP [1200].
 You can call it only for MC events.
 fSuccessP[key] contains the number of successes (i.e. a tracklet prediction matching
 with a cluster on the other layer) built by using a primary particle
 the unique chip key refers to the chip which get updated its efficiency

Int_t GetFailureS(const UInt_t key) const
 This method return the Data menmber fFailureS [1200].
 You can call it only for MC events.
 fFailureS[key] contains the number of failures (i.e. a tracklet prediction not matching
 with a cluster on the other layer) built by using a secondary particle
 the unique chip key refers to the chip which get updated its efficiency

Int_t GetFailureP(const UInt_t key) const
 This method return the Data menmber fFailureP [1200].
 You can call it only for MC events.
 fFailureP[key] contains the number of failures (i.e. a tracklet prediction not matching
 with a cluster on the other layer) built by using a primary particle
 the unique chip key refers to the chip which get updated its efficiency

Int_t GetRecons(const UInt_t key) const
 This method return the Data menmber fRecons [1200].
 You can call it only for MC events.
 fRecons[key] contains the number of reconstractable tracklets (i.e. a tracklet prediction which
 has an hit in the detector)
 the unique chip key refers to the chip where fall the prediction

Int_t GetNonRecons(const UInt_t key) const
 This method return the Data menmber fNonRecons [1200].
 You can call it only for MC events.
 fRecons[key] contains the number of unreconstractable tracklets (i.e. a tracklet prediction which
 has not any hit in the detector)
 the unique chip key refers to the chip where fall the prediction

void PrintAscii(ostream* os) const
 Print out some class data values in Ascii Form to output stream
 Inputs:
   ostream *os   Output stream where Ascii data is to be writen
 Outputs:
   none.
 Return:
   none.
void ReadAscii(istream* is)
 Read in some class data values in Ascii Form to output stream
 Inputs:
   istream *is   Input stream where Ascii data is to be read in from
 Outputs:
   none.
 Return:
   none.
void SavePredictionMC(TString filename = "TrackletsMCpred.root") const
 This Method write into an either asci or root file
 the used cuts and the statistics  of the MC related quantities
 The method SetMC() has to be called before
 Input TString filename: name of file for output (it deletes already existing
 file)
 Output: none


if(!fMC) {CallWarningMC(); return;}
void ReadPredictionMC(TString filename = "TrackletsMCpred.root")
 This Method read from an asci file (do not know why binary does not work)
 the cuts to be used and the statistics  of the MC related quantities
 Input TString filename: name of input file for output
 The method SetMC() has to be called before
 Output: none


if(!fMC) {CallWarningMC(); return;}
Bool_t SaveHists()
 This (private) method save the histograms on the output file
 (only if fHistOn is TRUE).
 Also the histograms from the base class are saved through the
 AliITSMultReconstructor::SaveHists() call
Bool_t WriteHistosToFile(TString filename = "TrackleterSPDHistos.root", Option_t* option = "RECREATE")
 Saves the histograms into a tree and saves the trees into a file
 Also the histograms from the base class are saved

void BookHistos()
 This method books addtitional histograms
 w.r.t. those of the base class.
 In particular, the differences of cluster coordinate between the two SPD
 layers are computed in the interpolation phase

void DeleteHistos()
 Private method to delete Histograms from memory
 it is called. e.g., by the destructor.

 form AliITSMultReconstructor
Bool_t IsReconstructableAt(Int_t layer, Int_t iC, Int_t ipart, const Float_t* vtx, const AliStack* stack = 0x0, TTree* ref = 0x0)
 This (private) method can be used only for MC events, where both AliStack and the TrackReference
 are available.
 It is used to asses whether a tracklet prediction is reconstructable or not at the other layer
 Input:
      - Int_t layer (either 0 or 1): layer which you want to check if the tracklete can be
                                     reconstructed at
      - Int_t iC : cluster index used to build the tracklet prediction
                   if layer=0 ==> iC=iC2 ; elseif layer=1 ==> iC=iC1
      - Float_t* vtx: actual event vertex
      - stack: pointer to Stack
      - ref:   pointer to TTRee of TrackReference
void ReflectClusterAroundZAxisForLayer(Int_t ilayer)
 this method apply a rotation by 180 degree around the Z (beam) axis to all
 the RecPoints in a given layer to be used to build tracklets.
 **************** VERY IMPORTANT:: ***************
 It must be called just after LoadClusterArrays, since afterwards the datamember
 fClustersLay1[iC1][0] and fClustersLay1[iC1][1] are redefined using polar coordinate
 instead of Cartesian

Int_t Clusters2Tracks(AliESDEvent* esd)
 This method is used to find the tracklets.
 It is called from AliReconstruction
 The vertex is supposed to be associated to the Tracker (i.e. to this) already
 The cluster is supposed to be associated to the Tracker already
 In case Monte Carlo is required, the appropriate linking to Stack and TrackRef is attempted

Int_t PostProcess(AliESDEvent* )
 It is called from AliReconstruction




LoadClusterArrays(TTree* tree)
 This method
 - gets the clusters from the cluster tree
 - convert them into global coordinates
 - store them in the internal arrays
 - count the number of cluster-fired chips
SetLightBkgStudyInParallel(Bool_t b = kTRUE)
     This method:
  - set Bool_t fLightBackgroundStudyInParallel = b
    a) if you set this kTRUE, then the estimation of the
      SPD efficiency is done as usual for data, but in
      parallel a light (i.e. without control histograms, etc.)
      evaluation of combinatorial background is performed
      with the usual ReflectClusterAroundZAxisForLayer method.
    b) if you set this kFALSE, then you would not have a second
      container for PlaneEfficiency statistics to be used for background
      (fPlaneEffBkg=0). If you want to have a full evaluation of the
      background (with all control histograms and additional data
      members referring to the background) then you have to call the
      method SetReflectClusterAroundZAxisForLayer(kTRUE) esplicitily
void SetReflectClusterAroundZAxisForLayer(Int_t ilayer, Bool_t b = kTRUE)
 method to study residual background:
 Input b= KTRUE --> reflect the clusters
      ilayer (either 0 or 1) --> which SPD layers should be reflected

Int_t PropagateBack(AliESDEvent* )
{return 0;}
Int_t RefitInward(AliESDEvent* )
{return 0;}
Int_t LoadClusters(TTree* cl)
{LoadClusterArrays(cl); return 0;}
void UnloadClusters()
{return;}
AliCluster * GetCluster(Int_t ) const
{return NULL;}
Bool_t GetLightBkgStudyInParallel() const
 SPD efficiency is done as usual for data, but in
 parallel a light (i.e. without control histograms, etc.)
 evaluation of combinatorial background is performed
 with the usual ReflectClusterAroundZAxisForLayer method.
void SetOnlyOneTrackletPerC2(Bool_t b = kTRUE)
void SetPhiWindowL2(Float_t w = 0.08)
void SetZetaWindowL2(Float_t w = 1.)
void SetPhiWindowL1(Float_t w = 0.08)
void SetZetaWindowL1(Float_t w = 1.)
void SetOnlyOneTrackletPerC1(Bool_t b = kTRUE)
void SetMinContVtx(Int_t min = 3)
Int_t GetNClustersLayer1() const
{return fNClustersLay1;}
Int_t GetNClustersLayer2() const
{return fNClustersLay2;}
Int_t GetNTracklets() const
{return fNTracklets;}
Float_t* GetClusterLayer1(Int_t n)
{return fClustersLay1[n];}
Float_t* GetClusterLayer2(Int_t n)
{return fClustersLay2[n];}
Float_t* GetTracklet(Int_t n)
 for the inner layer
{return fTracklets[n];}
void SetUpdateOncePerEventPlaneEff(Bool_t b = kTRUE)
AliITSPlaneEffSPD* GetPlaneEffSPD() const
{return fPlaneEffSPD;}
AliPlaneEff * GetPlaneEff()
void SetMC(Bool_t mc = kTRUE)
Bool_t GetMC() const
 Only for MC: use only "primary" particles (according to PrimaryTrackChecker) for the tracklet prediction
{return fMC;}
void SetUseOnlyPrimaryForPred(Bool_t flag = kTRUE)
 Only for MC: use only "secondary" particles (according to PrimaryTrackChecker) for the tracklet prediction
void SetUseOnlySecondaryForPred(Bool_t flag = kTRUE)
 Only for MC: associate a cluster to the tracklet prediction if  from the same particle
void SetUseOnlySameParticle(Bool_t flag = kTRUE)
 Only for MC: associate a cluster to the tracklet prediction if  from different particles
void SetUseOnlyDifferentParticle(Bool_t flag = kTRUE)
  Only for MC: re-define "primary" a particle if it is also "stable" (according to definition in method DecayingTrackChecker)
void SetUseOnlyStableParticle(Bool_t flag = kTRUE)
 only for MC: Getters relative to the above setters
Bool_t GetUseOnlyPrimaryForPred() const
Bool_t GetUseOnlySecondaryForPred() const
Bool_t GetUseOnlySameParticle() const
Bool_t GetUseOnlyDifferentParticle() const
Bool_t GetUseOnlyStableParticle() const
 Getters for the data members related to MC true statisitcs (see below)
Int_t GetPredictionPrimary(const UInt_t key) const
Int_t GetPredictionSecondary(const UInt_t key) const
Int_t GetClusterPrimary(const UInt_t key) const
Int_t GetClusterSecondary(const UInt_t key) const
Int_t GetSuccessPP(const UInt_t key) const
Int_t GetSuccessTT(const UInt_t key) const
Int_t GetSuccessS(const UInt_t key) const
Int_t GetSuccessP(const UInt_t key) const
Int_t GetFailureS(const UInt_t key) const
Int_t GetFailureP(const UInt_t key) const
Int_t GetRecons(const UInt_t key) const
Int_t GetNonRecons(const UInt_t key) const
Bool_t GetHistOn() const
 write histograms into a root file on disk
{return fHistOn;}
void SetHistOn(Bool_t his = kTRUE)
 switch on/off the extra histograms
Bool_t SetAngleRange02Pi(Double_t& angle) const
void CallWarningMC() const
{if(!fMC) AliWarning("You can use this method only for MC! Call SetMC() first");}