Update master to aliroot
[u/mrichter/AliRoot.git] / STEER / STEER / AliHit.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 //-----------------------------------------------------------------------
19 //    Base Hit class for all detectors
20 //    Contains the coordinates of the hit (single energy deposition)
21 //    and the number of correspondent track
22 //    Author:
23 //-----------------------------------------------------------------------
24
25 #include "TParticle.h"
26
27 #include "AliHit.h"
28 #include "AliRun.h"
29 #include "AliMC.h"
30 #include "AliStack.h"
31
32 ClassImp(AliHit)
33
34 //_______________________________________________________________________
35 AliHit::AliHit():
36   fTrack(0),
37   fX(0),
38   fY(0),
39   fZ(0)
40 {
41   //
42   // Default constructor
43   //
44 }
45
46 //_______________________________________________________________________
47 AliHit::AliHit(Int_t shunt, Int_t track):
48   fTrack(0),
49   fX(0),
50   fY(0),
51   fZ(0)
52 {
53   //
54   // Standard constructor
55   //
56   if(shunt == 1) {
57     int primary = gAlice->GetMCApp()->GetPrimary(track);
58     gAlice->GetMCApp()->Particle(primary)->SetBit(kKeepBit);
59     fTrack=primary;
60   } 
61
62   else if (shunt == 2) {
63     // the "primary" particle associated to the hit is
64     // the last track that has been flagged in the StepManager
65     // used by PHOS to associate the hit with the decay gamma
66     // rather than with the original pi0 
67     TParticle *part;
68     Int_t current;
69     Int_t parent=track;
70     while (1) {
71       current=parent;
72       part = gAlice->GetMCApp()->Particle(current);
73       parent=part->GetFirstMother();    
74       if(parent<0 || part->TestBit(kKeepBit))
75         break;
76     }
77     fTrack=current;   
78   } else {
79     fTrack=track;
80     gAlice->GetMCApp()->FlagTrack(fTrack);
81   }
82 }