09-jul-2001 NvE Support for impact points and user identifier introduced in AliTrack.
[u/mrichter/AliRoot.git] / RALICE / AliVertex.h
1 #ifndef ALIVERTEX_H
2 #define ALIVERTEX_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // $Id$
7
8 #include <iostream.h>
9 #include <math.h>
10  
11 #include "TObject.h"
12 #include "TObjArray.h"
13  
14 #include "AliJet.h"
15 #include "AliPosition.h"
16  
17 class AliVertex : public AliJet,public AliPosition
18 {
19  public:
20   AliVertex();                            // Default constructor
21   AliVertex(Int_t n);                     // Create a vertex to hold initially n tracks
22   ~AliVertex();                           // Default destructor
23   void Reset();                           // Reset all values and stored vertex and jet lists
24   void ResetVertices();                   // Reset stored vertex list
25   void AddJet(AliJet& j,Int_t tracks=1);  // Add a jet (and its tracks) to the vertex
26   void AddVertex(AliVertex& v,Int_t connect=1);// Add (and connect) a (sec.) vertex to the current vertex
27   void AddJet(AliJet* j,Int_t tracks=1)    { AddJet(*j,tracks); }
28   void AddVertex(AliVertex* v,Int_t connect=1) { AddVertex(*v,connect); }
29   void Info(TString f="car");             // Print the vertex info within coordinate frame f
30   void List(TString f="car");             // Print vertex prim. track information for coord. frame f
31   void ListAll(TString f="car");          // Print prim. + sec. vertex full track info for coord. frame f
32   Int_t GetNvertices();                   // Return the number of (secondary) vertices
33   AliVertex* GetVertex(Int_t i);          // Provide i-th (secondary) vertex
34   AliVertex* GetIdVertex(Int_t id);       // Provide the vertex with user identifier "id"
35   void SetNvmax(Int_t n=2);               // Set the initial max. number of (secondary) vertices
36   void SetVertexCopy(Int_t j);            // (De)activate creation of private copies in fVertices
37   Int_t GetVertexCopy();                  // Provide VertexCopy flag value      
38   Int_t GetNjets();                       // Return the number of jets
39   AliJet* GetJet(Int_t i);                // Provide i-th jet
40   AliJet* GetIdJet(Int_t id);             // Provide the jet with user identifier "id"
41   void SetNjmax(Int_t n=2);               // Set the initial max. number of jets
42   void SetJetCopy(Int_t j);               // (De)activate creation of private copies in fJets
43   Int_t GetJetCopy();                     // Provide JetCopy flag value      
44
45  protected:
46   Int_t fNvmax;         // The maximum number of (secondary) vertices
47   Int_t fNvtx;          // The number of (secondary) vertices
48   TObjArray* fVertices; // Array to hold the pointers to the (secondary) vertices
49   TObjArray* fConnects; // Array to hold the pointers to the auto-generated connecting tracks
50   Int_t fVertexCopy;    // Flag to denote creation of private copies in fVertices
51   Int_t fNjmax;         // The maximum number of jets
52   Int_t fNjets;         // The number of jets
53   TObjArray* fJets;     // Array to hold the pointers to the jets
54   Int_t fJetCopy;       // Flag to denote creation of private copies in fJets
55
56  private:
57   void Dump(AliVertex* v,Int_t n,TString f); // Recursively print all sec. vertices
58  
59  ClassDef(AliVertex,1) // Creation and investigation of an AliVertex.
60 };
61 #endif