New code for EMCAL (B.Nilsen)
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALHit.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 //  Hits class for EMCAL    
20 //  A hit in EMCAL is the sum of all hits in a single crystal
21 //               
22 //*-- Author: Sahal Yacoob (LBL / UCT)
23 // Based on AliPHOSHit
24
25 // --- Standard library ---
26 #include <stdio.h>
27 #include <string.h>
28 #include <stdlib.h>
29 #include <strstream.h>
30 #include <iostream.h>
31
32 // --- ROOT system ---
33 #include <TLorentzVector.h>
34
35 // --- AliRoot header files ---
36 #include "AliEMCALHit.h"
37 #include "AliRun.h"
38 #include "AliConst.h"
39
40
41 ClassImp(AliEMCALHit)
42
43 //______________________________________________________________________
44 AliEMCALHit::AliEMCALHit(){
45     // Default ctor
46    
47     fId      = 0;
48     fELOS    = 0.0;
49     fPrimary = 0;
50     fTrack   = 0;
51     fX       = 0.0;
52     fY       = 0.0;
53     fZ       = 0.0;
54     fP       = 0.0;
55 }
56 //______________________________________________________________________
57 AliEMCALHit::AliEMCALHit(const AliEMCALHit & hit){
58     // copy ctor
59    
60     fId      = hit.fId ; 
61     fELOS    = hit.fELOS ;
62     fPrimary = hit.fPrimary ; 
63     fTrack   = hit.fTrack ; 
64     fX       = hit.fX;
65     fY       = hit.fY;
66     fZ       = hit.fZ;
67     fP       = hit.fP;
68 }
69 //______________________________________________________________________
70 AliEMCALHit::AliEMCALHit(Int_t shunt, Int_t primary, Int_t track,Int_t id,
71                          Float_t *hits,TLorentzVector *p):AliHit(shunt, track){
72     //
73     // Create a CPV hit object
74     //
75
76     fX          = hits[0];
77     fY          = hits[1];
78     fZ          = hits[2];
79     fId         = id;
80     fELOS       = hits[3];
81     fPrimary    = primary;
82     fP          = *p;
83 }
84 //______________________________________________________________________
85 Bool_t AliEMCALHit::operator==(AliEMCALHit const &rValue) const{ 
86     // Two hits are identical if they have the same Id and originat
87     // from the same primary
88     Bool_t rv = kFALSE;
89
90     if ( (fId == rValue.GetId()) && ( fPrimary == rValue.GetPrimary()) )
91         rv = kTRUE;
92
93     return rv;
94 }
95 //______________________________________________________________________
96 AliEMCALHit AliEMCALHit::operator+(const AliEMCALHit &rValue){
97     // Add the energy of the hit
98
99     fELOS += rValue.GetEnergy() ;
100
101     return *this;
102
103 }
104 //______________________________________________________________________
105 ostream& operator << (ostream& out,AliEMCALHit& hit){
106     // Print out Id and energy
107
108     out << "AliEMCALHit:";
109     out << "id=" <<  hit.GetId();
110     out << ", Eloss=" <<  hit.GetEnergy();
111     out << "GeV , Track no.=" << hit.GetPrimary();
112     out << ", (xyz)=(" << hit.X()<< ","<< hit.Y()<< ","<<hit.Z()<<") cm";
113     out << ", fTrack=" << hit.GetTrack();
114     out << ", P=(" << hit.GetP().Px() << "," << hit.GetP().Py() <<","
115                    << hit.GetP().Pz() << "," << hit.GetP().E();
116     out << endl;
117
118     return out;
119 }