ROOT logo
/**************************************************************************
 * 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$ */

#include <Riostream.h>

#include <TLorentzVector.h>
#include <TParticle.h>

#include "AliRun.h"
#include "AliITS.h"
#include "AliITSgeom.h"
#include "AliITShit.h"
#include "AliMC.h"
#include "AliStack.h"

using std::ios;
ClassImp(AliITShit)
////////////////////////////////////////////////////////////////////////
// Version: 0
// Written by Rene Brun, Federico Carminati, and Roberto Barbera
//
// Version: 1
// Modified and documented by Bjorn S. Nilsen
// July 11 1999
//
// AliITShit is the hit class for the ITS. Hits are the information
// that comes from a Monte Carlo at each step as a particle mass through
// sensitive detector elements as particles are transported through a
// detector.
//
//Begin_Html
/*
<img src="picts/ITS/AliITShit_Class_Diagram.gif">
</pre>
<br clear=left>
<font size=+2 color=red>
<p>This show the relasionships between the ITS hit class and the rest of Aliroot.
</font>
<pre>
*/
//End_Html
////////////////////////////////////////////////////////////////////////
// Inline Member functions:
//
// AliITShit()
//     The default creator of the AliITShit class.
//
// ~AliITShit()
//     The default destructor of the AliITShit class.
//
// int GetTrack()
//     See AliHit for a full description. Returns the track number fTrack
// for this hit.
//
// SetTrack(int track)
//     See AliHit for a full description. Sets the track number fTrack
// for this hit.
//
// Int_t GetTrackStatus()
//     Returns the value of the track status flag fStatus. This flag
// indicates the track status at the time of creating this hit. It is
// made up of the following 8 status bits from highest order to lowest
// order bits
// 0           :  IsTrackAlive():    IsTrackStop():IsTrackDisappeared():
// IsTrackOut():IsTrackExiting():IsTrackEntering():IsTrackInside()     .
// See AliMC for a description of these functions. If the function is
// true then the bit is set to one, otherwise it is zero.
//
// Bool_t StatusInside()
//     Returns kTRUE if the particle producing this hit is still inside
// the present volume. Returns kFalse if this particle will be in another
// volume. {bit IsTrackInside is set or not}
//
// Bool_t StatusEntering()
//     Returns kTRUE if the particle producing this hit is has just enterd
// the present volume. Returns kFalse otherwise.  {bit IsTrackEntering is
// set or not}
//
// Bool_t StatusExiting()
//     Returns kTRUE if the particle producing this hit is will exit
// the present volume. Returns kFalse otherwise. {bit IsTrackExiting is set
// or not}
//
// Bool_t StatusOut()
//     Returns kTRUE if the particle producing this hit is goint exit the
// simulation. Returns kFalse otherwise. {bit IsTrackOut is set or not}
//
// Bool_t StatusDisappeared()
//     Returns kTRUE if the particle producing this hit is going to "disappear"
// for example it has interacted producing some other particles. Returns
//  kFalse otherwise. {bit IsTrackOut is set or not}
//
// Bool_t StatusStop()
//     Returns kTRUE if the particle producing this hit is has dropped below
// its energy cut off producing some other particles. Returns kFalse otherwise.
// {bit IsTrackOut is set or not}
//
// Bool_t StatuAlives()
//     Returns kTRUE if the particle producing this hit is going to continue
// to be transported. Returns kFalse otherwise. {bit IsTrackOut is set or not}
//
// Int_t GetLayer()
//     Returns the layer number, fLayer, for this hit.
//
// Int_t GetLadder()
//     Returns the ladder number, fLadder, for this hit.
//
// Int_t GetDetector()
//     Returns the detector number, fDet, for this hit.
//
// GetDetectorID(Int_t &layer, Int_t &ladder, Int_t &detector)
//     Returns the layer, ladder, and detector numbers, fLayer fLadder fDet,
// in one call.
//
// Float_t GetIonization()
//     Returns the energy lost, fDestep, by the particle creating this hit,
// in the units defined by the Monte Carlo.
//
// GetPositionG(Float_t &x, Float_t &y, Float_t &z)
//     Returns the global position, fX fY fZ, of this hit, in the units
// define by the Monte Carlo.
//
// GetPositionG(Double_t &x, Double_t &y, Double_t &z)
//     Returns the global position, fX fY fZ, of this hit, in the units
// define by the Monte Carlo.
//
// GetPositionG(Float_t &x, Float_t &y, Float_t &z, Float_t &tof)
//     Returns the global position and time of flight, fX fY fZ fTof, of
// this hit, in the units define by the Monte Carlo.
//
// GetPositionG(Double_t &x,Double_t &y,Double_t &z,Double_t &tof)
//     Returns the global position and time of flight, fX fY fZ fTof, of
// this hit, in the units define by the Monte Carlo.
//
// GetPositionL(Double_t &x,Double_t &y,Double_t &z)
//     Returns the local position, fX fY fZ, of this hit in the coordiante
// of this module, in the units define by the Monte Carlo.
//
// GetPositionG(Double_t &x,Double_t &y,Double_t &z,Double_t &tof)
//     Returns the local position and time of flight, fX fY fZ fTof, of
// this hit in the coordinates of this module, in the units define by the
//  Monte Carlo.
//
// Float_t GetXG()
//     Returns the global x position in the units defined by the Monte Carlo.
//
// Float_t GetYG()
//     Returns the global y position in the units defined by the Monte Carlo.
//
// Float_t GetYG()
//     Returns the global z position in the units defined by the Monte Carlo.
//
// Float_t GetTOF()
//     Returns the time of flight, fTof, of this hit, in the units defined
// by the Monte Carlo.
//
// GetMomentumG(Float_t &px, Float_t &py, Float_t &pz)
//     Returns the global momentum, fPx fPy fPz, of the particle that made
// this hit, in the units define by the Monte Carlo.
//
// GetMomentumG(Double_t &px,Double_t &py,Double_t &pz)
//     Returns the global momentum, fPx fPy fPz, of the particle that made
// this hit, in the units define by the Monte Carlo.
//
// GetMomentumL(Double_t &px,Double_t &py,Double_t &pz)
//     Returns the momentum, fPx fPy fPz in coordinate appropreate for this
// specific module, in the units define by the Monte Carlo.
//
// Float_t GetPXG()
//     Returns the global X momentum in the units defined by the Monte Carlo.
//
// Float_t GetPYG()
//     Returns the global Y momentum in the units defined by the Monte Carlo.
//
// Float_t GetPZG()
//     Returns the global Z momentum in the units defined by the Monte Carlo.
//
////////////////////////////////////////////////////////////////////////
//_____________________________________________________________________________
AliITShit::AliITShit():AliHit(),
fStatus(0), // Track Status
fModule(0),  // Module number 
fPx(0.0),     // PX of particle at the point of the hit
fPy(0.0),     // PY of particle at the point of the hit
fPz(0.0),     // PZ of particle at the point of the hit
fDestep(0.0), // Energy deposited in the current step
fTof(0.0),    // Time of flight at the point of the hit
fStatus0(0),// Track Status of Starting point
fx0(0.0),     // Starting point of this step
fy0(0.0),     // Starting point of this step
fz0(0.0),     // Starting point of this step
ft0(0.0)     // Starting point of this step
{
    // Default Constructor
    // Zero data member just to be safe.
    // Intputs:
    //    none.
    // Outputs:
    //    none.
    // Return:
    //    A default created AliITShit class.

}
//----------------------------------------------------------------------
AliITShit::AliITShit(Int_t shunt,Int_t track,Int_t *vol,Float_t edep,
                     Float_t tof,TLorentzVector &x,TLorentzVector &x0,
                     TLorentzVector &p) :
AliHit(shunt, track), // AliHit
fStatus(vol[3]), // Track Status
fModule(vol[0]),  // Module number 
fPx(p.Px()),     // PX of particle at the point of the hit
fPy(p.Py()),     // PY of particle at the point of the hit
fPz(p.Pz()),     // PZ of particle at the point of the hit
fDestep(edep), // Energy deposited in the current step
fTof(tof),    // Time of flight at the point of the hit
fStatus0(vol[4]),// Track Status of Starting point
fx0(x0.X()),     // Starting point of this step
fy0(x0.Y()),     // Starting point of this step
fz0(x0.Z()),     // Starting point of this step
ft0(x0.T())     // Starting point of this step
{
    // Create ITS hit
    //     The creator of the AliITShit class. The variables shunt and
    // track are passed to the creator of the AliHit class. See the AliHit
    // class for a full description. In the units of the Monte Carlo
    // Inputs:
    //    Int_t shunt   See AliHit
    //    Int_t track   Track number, see AliHit
    //    Int_t *vol     Array of integer hit data,
    //                     vol[0] module
    //                     vol[1] not used
    //                     vol[2] not used
    //                     vol[3] Set of status bits
    //                     vol[4] Set of status bits at start
    //    Float_t edep       The energy deposited GeV during the transport
    //                       of this step
    //    Float_t tof        The time of flight of this particle at this step
    //    TLorenzVector &x   The Global position of this step [cm]
    //    TLorenzVector &x0  The Global position of where this step 
    //                       started from [cm]
    //    TLorenzVector &p   The Global momentum of the particle at this
    //                       step [GeV/c]
    // Outputs:
    //    none.
    // Return:
    //    A default created AliITShit class.

    SetPosition(x);
}
//______________________________________________________________________
AliITShit::AliITShit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits):
    AliHit(shunt, track), // AliHit
fStatus(vol[3]), // Track Status
fModule(vol[0]),  // Module number 
fPx(hits[3]),     // PX of particle at the point of the hit
fPy(hits[4]),     // PY of particle at the point of the hit
fPz(hits[5]),     // PZ of particle at the point of the hit
fDestep(hits[6]), // Energy deposited in the current step
fTof(hits[7]),    // Time of flight at the point of the hit
fStatus0(vol[4]),// Track Status of Starting point
fx0(hits[8]),     // Starting point of this step
fy0(hits[9]),     // Starting point of this step
fz0(hits[10]),     // Starting point of this step
ft0(hits[11])     // Starting point of this step
{
    // Create ITS hit
    //     The creator of the AliITShit class. The variables shunt and
    // track are passed to the creator of the AliHit class. See the AliHit
    // class for a full description. the integer array *vol contains, in order,
    // fLayer = vol[0], fDet = vol[1], fLadder = vol[2], fStatus = vol[3].
    // The array *hits contains, in order, fX = hits[0], fY = hits[1],
    // fZ = hits[2], fPx = hits[3], fPy = hits[4], fPz = hits[5],
    // fDestep = hits[6], and fTof = hits[7]. In the units of the Monte Carlo
    // Intputs:
    //    Int_t shunt   See AliHit
    //    Int_t track   Track number, see AliHit
    //    Int_t *vol     Array of integer hit data,
    //                     vol[0] module number
    //                     vol[1] not used
    //                     vol[2] not used
    //                     vol[3] Set of status bits
    //                     vol[4] Set of status bits at start
    //    Float_t *hits   Array of hit information
    //                     hits[0] X global position of this hit
    //                     hits[1] Y global position of this hit
    //                     hits[2] Z global position of this hit
    //                     hits[3] Px global position of this hit
    //                     hits[4] Py global position of this hit
    //                     hits[5] Pz global position of this hit
    //                     hits[6] Energy deposited by this step
    //                     hits[7] Time of flight of this particle at this step
    //                     hits[8] X0 global position of start of step
    //                     hits[9] Y0 global position of start of step
    //                     hits[10] Z0 global position of start of step
    //                     hits[11] Time of flight of this particle before step
    // Outputs:
    //    none.
    // Return:
    //    A standard created AliITShit class.

    fX          = hits[0];  // Track X global position
    fY          = hits[1];  // Track Y global position
    fZ          = hits[2];  // Track Z global position
}
//______________________________________________________________________
AliITShit::AliITShit(const AliITShit &h):
AliHit(h), // AliHit
fStatus(h.fStatus), // Track Status
fModule(h.fModule),  // Module number 
fPx(h.fPx),     // PX of particle at the point of the hit
fPy(h.fPy),     // PY of particle at the point of the hit
fPz(h.fPz),     // PZ of particle at the point of the hit
fDestep(h.fDestep), // Energy deposited in the current step
fTof(h.fTof),    // Time of flight at the point of the hit
fStatus0(h.fStatus0),// Track Status of Starting point
fx0(h.fx0),     // Starting point of this step
fy0(h.fy0),     // Starting point of this step
fz0(h.fz0),     // Starting point of this step
ft0(h.ft0)     // Starting point of this step
{
    // The standard copy constructor
    // Inputs:
    //   AliITShit   &h the sourse of this copy
    // Outputs:
    //   none.
    // Return:
    //  A copy of the sourse hit h

    //Info("CopyConstructor","Coping hit");

    if(this == &h) return;
    return;
}
//______________________________________________________________________
AliITShit& AliITShit::operator=(const AliITShit &h){
    // The standard = operator
    // Inputs:
    //   AliITShit   &h the sourse of this copy
    // Outputs:
    //   none.
    // Return:
    //  A copy of the sourse hit h

    if(this == &h) return *this;
    this->fStatus  = h.fStatus;
    this->fModule  = h.fModule;
    this->fPx      = h.fPx;
    this->fPy      = h.fPy;
    this->fPz      = h.fPz;
    this->fDestep  = h.fDestep;
    this->fTof     = h.fTof;
    this->fStatus0 = h.fStatus0;
    this->fx0      = h.fx0;
    this->fy0      = h.fy0;
    this->fz0      = h.fz0;
    this->ft0      = h.ft0;
    return *this;
}
//______________________________________________________________________
void AliITShit::SetShunt(Int_t shunt){
    // Sets track flag based on shunt value. Code copied from
    // AliHit standar constructor.
    // Inputs:
    //   Int_t shunt    A flag to indecate what to do with track numbers
    // Outputs:
    //   none.
    // Return:
    //   none.
    Int_t primary,track,current,parent;
    TParticle *part;

    track = fTrack;
    if(shunt == 1) {
        primary = gAlice->GetMCApp()->GetPrimary(track);
        gAlice->GetMCApp()->Particle(primary)->SetBit(kKeepBit);
        fTrack=primary;
    }else if (shunt == 2) {
        // the "primary" particle associated to the hit is
        // the last track that has been flagged in the StepManager
        // used by PHOS to associate the hit with the decay gamma
        // rather than with the original pi0
        parent=track;
        while (1) {
            current=parent;
            part = gAlice->GetMCApp()->Particle(current);
            parent=part->GetFirstMother();
            if(parent<0 || part->TestBit(kKeepBit))
                break;
        }
        fTrack=current;
    }else {
        fTrack=track;
        gAlice->GetMCApp()->FlagTrack(fTrack);
    } // end if shunt
}
//______________________________________________________________________
void AliITShit::GetPositionL(Float_t &x,Float_t &y,Float_t &z,Float_t &tof){
    //     Returns the position and time of flight of this hit in the local
    // coordinates of this module, and in the units of the Monte Carlo.
    // Inputs:
    //   none.
    // Outputs:
    //   Float_t x   Global position of this hit [cm]
    //   Float_t y   Global position of this hit [cm]
    //   Float_t z   Global poistion of this hit [cm]
    //   Float_t tof Time of flight of particle at this hit
    // Return:
    //   none.
    AliITSgeom *gm = ((AliITS*)gAlice->GetDetector("ITS"))->GetITSgeom();
    Float_t g[3],l[3];

    g[0] = fX;
    g[1] = fY;
    g[2] = fZ;
    if(gm) {
        gm->GtoL(fModule,g,l);
        x = l[0];
        y = l[1];
        z = l[2];
    } else {
        Error("AliITShit","NULL pointer to the geometry! return smth else");
        // AliITSv7 - SDD case
        x=fX;
        y=fY;
        z=fZ;
    } // end if
    tof = fTof;
    return;
}
//______________________________________________________________________
void AliITShit::GetPositionL0(Double_t &x,Double_t &y,Double_t &z,
                              Double_t &tof){
    //     Returns the initial position and time of flight of this hit 
    // in the local coordinates of this module, and in the units of the 
    // Monte Carlo.
    // Inputs:
    //   none.
    // Outputs:
    //   Double_t x   Global position of this hit [cm]
    //   Double_t y   Global position of this hit [cm]
    //   Double_t z   Global poistion of this hit [cm]
    //   Double_t tof Time of flight of particle at this hit
    // Return:
    //   none.
    AliITSgeom *gm = ((AliITS*)gAlice->GetDetector("ITS"))->GetITSgeom();
    Float_t g[3],l[3];

    g[0] = fx0;
    g[1] = fy0;
    g[2] = fz0;
    if(gm) {
        gm->GtoL(fModule,g,l);
        x = l[0];
        y = l[1];
        z = l[2];
    } else {
        Error("AliITShit","NULL pointer to the geometry! return smth else");
        x=fx0;
        y=fy0;
        z=fz0;
    }
    tof = ft0;
    return;
}

//______________________________________________________________________
TParticle * AliITShit::GetParticle() const {
    //     Returns the pointer to the TParticle for the particle that created
    // this hit. From the TParticle all kinds of information about this 
    // particle can be found. See the TParticle class.
    // Inputs:
    //   none.
    // Outputs:
    //   none.
    // Return:
    //   The TParticle of the track that created this hit.

    return gAlice->GetMCApp()->Particle(GetTrack());
}
//----------------------------------------------------------------------
void AliITShit::GetDetectorID(Int_t &layer,Int_t &ladder,Int_t &det)const{
    // Returns the layer ladder and detector number lables for this
    // ITS module. The use of layer, ladder and detector number for
    // discribing the ITS is obsoleate.
    // Inputs:
    //   none.
    // Outputs:
    //   Int_t   &layer   Layer lable
    //   Int_t   &ladder  Ladder lable
    //   Int_t   &det     Detector lable
    // Return:
    //    none.
    AliITSgeom *gm = ((AliITS*)gAlice->GetDetector("ITS"))->GetITSgeom();

    gm->GetModuleId(fModule,layer,ladder,det);
    return;
}  
//----------------------------------------------------------------------
void AliITShit::Print(ostream *os) const {
    // Standard output format for this class.
    // Inputs:
    //   ostream *os   The output stream
    // Outputs:
    //   none.
    // Return:
    //   none.

#if defined __GNUC__
#if __GNUC__ > 2
    ios::fmtflags fmt;
#else
    Int_t fmt;
#endif
#else
#if defined __ICC || defined __ECC || defined __xlC__
    ios::fmtflags fmt;
#else
    Int_t fmt;
#endif
#endif
 
    fmt = os->setf(ios::scientific);  // set scientific floating point output
    *os << fTrack << " " << fX << " " << fY << " " << fZ << " ";
    fmt = os->setf(ios::hex); // set hex for fStatus only.
    *os << fStatus << " ";
    fmt = os->setf(ios::dec); // every thing else decimel.
    *os << fModule << " ";
    *os << fPx << " " << fPy << " " << fPz << " ";
    *os << fDestep << " " << fTof;
    *os << " " << fx0 << " " << fy0 << " " << fz0;
//    *os << " " << endl;
    os->flags(fmt); // reset back to old formating.
    return;
}
//----------------------------------------------------------------------
void AliITShit::Read(istream *is) {
    // Standard input format for this class.
    // Inputs:
    //   istream *is  the input stream
    // Outputs:
    //   none.
    // Return:
    //   none.

    *is >> fTrack >> fX >> fY >> fZ;
    *is >> fStatus >> fModule >> fPx >> fPy >> fPz >> fDestep >> fTof;
    *is >> fx0 >> fy0 >> fz0;
    return;
}
//----------------------------------------------------------------------
ostream &operator<<(ostream &os,AliITShit &p){
    // Standard output streaming function.
    // Inputs:
    //   ostream os  The output stream
    //   AliITShit p The his to be printed out
    // Outputs:
    //   none.
    // Return:
    //   The input stream

    p.Print(&os);
    return os;
}
//----------------------------------------------------------------------
istream &operator>>(istream &is,AliITShit &r){
    // Standard input streaming function.
    // Inputs:
    //   istream is  The input stream
    //   AliITShit p The AliITShit class to be filled from this input stream
    // Outputs:
    //   none.
    // Return:
    //   The input stream

    r.Read(&is);
    return is;
}
//----------------------------------------------------------------------
 AliITShit.cxx:1
 AliITShit.cxx:2
 AliITShit.cxx:3
 AliITShit.cxx:4
 AliITShit.cxx:5
 AliITShit.cxx:6
 AliITShit.cxx:7
 AliITShit.cxx:8
 AliITShit.cxx:9
 AliITShit.cxx:10
 AliITShit.cxx:11
 AliITShit.cxx:12
 AliITShit.cxx:13
 AliITShit.cxx:14
 AliITShit.cxx:15
 AliITShit.cxx:16
 AliITShit.cxx:17
 AliITShit.cxx:18
 AliITShit.cxx:19
 AliITShit.cxx:20
 AliITShit.cxx:21
 AliITShit.cxx:22
 AliITShit.cxx:23
 AliITShit.cxx:24
 AliITShit.cxx:25
 AliITShit.cxx:26
 AliITShit.cxx:27
 AliITShit.cxx:28
 AliITShit.cxx:29
 AliITShit.cxx:30
 AliITShit.cxx:31
 AliITShit.cxx:32
 AliITShit.cxx:33
 AliITShit.cxx:34
 AliITShit.cxx:35
 AliITShit.cxx:36
 AliITShit.cxx:37
 AliITShit.cxx:38
 AliITShit.cxx:39
 AliITShit.cxx:40
 AliITShit.cxx:41
 AliITShit.cxx:42
 AliITShit.cxx:43
 AliITShit.cxx:44
 AliITShit.cxx:45
 AliITShit.cxx:46
 AliITShit.cxx:47
 AliITShit.cxx:48
 AliITShit.cxx:49
 AliITShit.cxx:50
 AliITShit.cxx:51
 AliITShit.cxx:52
 AliITShit.cxx:53
 AliITShit.cxx:54
 AliITShit.cxx:55
 AliITShit.cxx:56
 AliITShit.cxx:57
 AliITShit.cxx:58
 AliITShit.cxx:59
 AliITShit.cxx:60
 AliITShit.cxx:61
 AliITShit.cxx:62
 AliITShit.cxx:63
 AliITShit.cxx:64
 AliITShit.cxx:65
 AliITShit.cxx:66
 AliITShit.cxx:67
 AliITShit.cxx:68
 AliITShit.cxx:69
 AliITShit.cxx:70
 AliITShit.cxx:71
 AliITShit.cxx:72
 AliITShit.cxx:73
 AliITShit.cxx:74
 AliITShit.cxx:75
 AliITShit.cxx:76
 AliITShit.cxx:77
 AliITShit.cxx:78
 AliITShit.cxx:79
 AliITShit.cxx:80
 AliITShit.cxx:81
 AliITShit.cxx:82
 AliITShit.cxx:83
 AliITShit.cxx:84
 AliITShit.cxx:85
 AliITShit.cxx:86
 AliITShit.cxx:87
 AliITShit.cxx:88
 AliITShit.cxx:89
 AliITShit.cxx:90
 AliITShit.cxx:91
 AliITShit.cxx:92
 AliITShit.cxx:93
 AliITShit.cxx:94
 AliITShit.cxx:95
 AliITShit.cxx:96
 AliITShit.cxx:97
 AliITShit.cxx:98
 AliITShit.cxx:99
 AliITShit.cxx:100
 AliITShit.cxx:101
 AliITShit.cxx:102
 AliITShit.cxx:103
 AliITShit.cxx:104
 AliITShit.cxx:105
 AliITShit.cxx:106
 AliITShit.cxx:107
 AliITShit.cxx:108
 AliITShit.cxx:109
 AliITShit.cxx:110
 AliITShit.cxx:111
 AliITShit.cxx:112
 AliITShit.cxx:113
 AliITShit.cxx:114
 AliITShit.cxx:115
 AliITShit.cxx:116
 AliITShit.cxx:117
 AliITShit.cxx:118
 AliITShit.cxx:119
 AliITShit.cxx:120
 AliITShit.cxx:121
 AliITShit.cxx:122
 AliITShit.cxx:123
 AliITShit.cxx:124
 AliITShit.cxx:125
 AliITShit.cxx:126
 AliITShit.cxx:127
 AliITShit.cxx:128
 AliITShit.cxx:129
 AliITShit.cxx:130
 AliITShit.cxx:131
 AliITShit.cxx:132
 AliITShit.cxx:133
 AliITShit.cxx:134
 AliITShit.cxx:135
 AliITShit.cxx:136
 AliITShit.cxx:137
 AliITShit.cxx:138
 AliITShit.cxx:139
 AliITShit.cxx:140
 AliITShit.cxx:141
 AliITShit.cxx:142
 AliITShit.cxx:143
 AliITShit.cxx:144
 AliITShit.cxx:145
 AliITShit.cxx:146
 AliITShit.cxx:147
 AliITShit.cxx:148
 AliITShit.cxx:149
 AliITShit.cxx:150
 AliITShit.cxx:151
 AliITShit.cxx:152
 AliITShit.cxx:153
 AliITShit.cxx:154
 AliITShit.cxx:155
 AliITShit.cxx:156
 AliITShit.cxx:157
 AliITShit.cxx:158
 AliITShit.cxx:159
 AliITShit.cxx:160
 AliITShit.cxx:161
 AliITShit.cxx:162
 AliITShit.cxx:163
 AliITShit.cxx:164
 AliITShit.cxx:165
 AliITShit.cxx:166
 AliITShit.cxx:167
 AliITShit.cxx:168
 AliITShit.cxx:169
 AliITShit.cxx:170
 AliITShit.cxx:171
 AliITShit.cxx:172
 AliITShit.cxx:173
 AliITShit.cxx:174
 AliITShit.cxx:175
 AliITShit.cxx:176
 AliITShit.cxx:177
 AliITShit.cxx:178
 AliITShit.cxx:179
 AliITShit.cxx:180
 AliITShit.cxx:181
 AliITShit.cxx:182
 AliITShit.cxx:183
 AliITShit.cxx:184
 AliITShit.cxx:185
 AliITShit.cxx:186
 AliITShit.cxx:187
 AliITShit.cxx:188
 AliITShit.cxx:189
 AliITShit.cxx:190
 AliITShit.cxx:191
 AliITShit.cxx:192
 AliITShit.cxx:193
 AliITShit.cxx:194
 AliITShit.cxx:195
 AliITShit.cxx:196
 AliITShit.cxx:197
 AliITShit.cxx:198
 AliITShit.cxx:199
 AliITShit.cxx:200
 AliITShit.cxx:201
 AliITShit.cxx:202
 AliITShit.cxx:203
 AliITShit.cxx:204
 AliITShit.cxx:205
 AliITShit.cxx:206
 AliITShit.cxx:207
 AliITShit.cxx:208
 AliITShit.cxx:209
 AliITShit.cxx:210
 AliITShit.cxx:211
 AliITShit.cxx:212
 AliITShit.cxx:213
 AliITShit.cxx:214
 AliITShit.cxx:215
 AliITShit.cxx:216
 AliITShit.cxx:217
 AliITShit.cxx:218
 AliITShit.cxx:219
 AliITShit.cxx:220
 AliITShit.cxx:221
 AliITShit.cxx:222
 AliITShit.cxx:223
 AliITShit.cxx:224
 AliITShit.cxx:225
 AliITShit.cxx:226
 AliITShit.cxx:227
 AliITShit.cxx:228
 AliITShit.cxx:229
 AliITShit.cxx:230
 AliITShit.cxx:231
 AliITShit.cxx:232
 AliITShit.cxx:233
 AliITShit.cxx:234
 AliITShit.cxx:235
 AliITShit.cxx:236
 AliITShit.cxx:237
 AliITShit.cxx:238
 AliITShit.cxx:239
 AliITShit.cxx:240
 AliITShit.cxx:241
 AliITShit.cxx:242
 AliITShit.cxx:243
 AliITShit.cxx:244
 AliITShit.cxx:245
 AliITShit.cxx:246
 AliITShit.cxx:247
 AliITShit.cxx:248
 AliITShit.cxx:249
 AliITShit.cxx:250
 AliITShit.cxx:251
 AliITShit.cxx:252
 AliITShit.cxx:253
 AliITShit.cxx:254
 AliITShit.cxx:255
 AliITShit.cxx:256
 AliITShit.cxx:257
 AliITShit.cxx:258
 AliITShit.cxx:259
 AliITShit.cxx:260
 AliITShit.cxx:261
 AliITShit.cxx:262
 AliITShit.cxx:263
 AliITShit.cxx:264
 AliITShit.cxx:265
 AliITShit.cxx:266
 AliITShit.cxx:267
 AliITShit.cxx:268
 AliITShit.cxx:269
 AliITShit.cxx:270
 AliITShit.cxx:271
 AliITShit.cxx:272
 AliITShit.cxx:273
 AliITShit.cxx:274
 AliITShit.cxx:275
 AliITShit.cxx:276
 AliITShit.cxx:277
 AliITShit.cxx:278
 AliITShit.cxx:279
 AliITShit.cxx:280
 AliITShit.cxx:281
 AliITShit.cxx:282
 AliITShit.cxx:283
 AliITShit.cxx:284
 AliITShit.cxx:285
 AliITShit.cxx:286
 AliITShit.cxx:287
 AliITShit.cxx:288
 AliITShit.cxx:289
 AliITShit.cxx:290
 AliITShit.cxx:291
 AliITShit.cxx:292
 AliITShit.cxx:293
 AliITShit.cxx:294
 AliITShit.cxx:295
 AliITShit.cxx:296
 AliITShit.cxx:297
 AliITShit.cxx:298
 AliITShit.cxx:299
 AliITShit.cxx:300
 AliITShit.cxx:301
 AliITShit.cxx:302
 AliITShit.cxx:303
 AliITShit.cxx:304
 AliITShit.cxx:305
 AliITShit.cxx:306
 AliITShit.cxx:307
 AliITShit.cxx:308
 AliITShit.cxx:309
 AliITShit.cxx:310
 AliITShit.cxx:311
 AliITShit.cxx:312
 AliITShit.cxx:313
 AliITShit.cxx:314
 AliITShit.cxx:315
 AliITShit.cxx:316
 AliITShit.cxx:317
 AliITShit.cxx:318
 AliITShit.cxx:319
 AliITShit.cxx:320
 AliITShit.cxx:321
 AliITShit.cxx:322
 AliITShit.cxx:323
 AliITShit.cxx:324
 AliITShit.cxx:325
 AliITShit.cxx:326
 AliITShit.cxx:327
 AliITShit.cxx:328
 AliITShit.cxx:329
 AliITShit.cxx:330
 AliITShit.cxx:331
 AliITShit.cxx:332
 AliITShit.cxx:333
 AliITShit.cxx:334
 AliITShit.cxx:335
 AliITShit.cxx:336
 AliITShit.cxx:337
 AliITShit.cxx:338
 AliITShit.cxx:339
 AliITShit.cxx:340
 AliITShit.cxx:341
 AliITShit.cxx:342
 AliITShit.cxx:343
 AliITShit.cxx:344
 AliITShit.cxx:345
 AliITShit.cxx:346
 AliITShit.cxx:347
 AliITShit.cxx:348
 AliITShit.cxx:349
 AliITShit.cxx:350
 AliITShit.cxx:351
 AliITShit.cxx:352
 AliITShit.cxx:353
 AliITShit.cxx:354
 AliITShit.cxx:355
 AliITShit.cxx:356
 AliITShit.cxx:357
 AliITShit.cxx:358
 AliITShit.cxx:359
 AliITShit.cxx:360
 AliITShit.cxx:361
 AliITShit.cxx:362
 AliITShit.cxx:363
 AliITShit.cxx:364
 AliITShit.cxx:365
 AliITShit.cxx:366
 AliITShit.cxx:367
 AliITShit.cxx:368
 AliITShit.cxx:369
 AliITShit.cxx:370
 AliITShit.cxx:371
 AliITShit.cxx:372
 AliITShit.cxx:373
 AliITShit.cxx:374
 AliITShit.cxx:375
 AliITShit.cxx:376
 AliITShit.cxx:377
 AliITShit.cxx:378
 AliITShit.cxx:379
 AliITShit.cxx:380
 AliITShit.cxx:381
 AliITShit.cxx:382
 AliITShit.cxx:383
 AliITShit.cxx:384
 AliITShit.cxx:385
 AliITShit.cxx:386
 AliITShit.cxx:387
 AliITShit.cxx:388
 AliITShit.cxx:389
 AliITShit.cxx:390
 AliITShit.cxx:391
 AliITShit.cxx:392
 AliITShit.cxx:393
 AliITShit.cxx:394
 AliITShit.cxx:395
 AliITShit.cxx:396
 AliITShit.cxx:397
 AliITShit.cxx:398
 AliITShit.cxx:399
 AliITShit.cxx:400
 AliITShit.cxx:401
 AliITShit.cxx:402
 AliITShit.cxx:403
 AliITShit.cxx:404
 AliITShit.cxx:405
 AliITShit.cxx:406
 AliITShit.cxx:407
 AliITShit.cxx:408
 AliITShit.cxx:409
 AliITShit.cxx:410
 AliITShit.cxx:411
 AliITShit.cxx:412
 AliITShit.cxx:413
 AliITShit.cxx:414
 AliITShit.cxx:415
 AliITShit.cxx:416
 AliITShit.cxx:417
 AliITShit.cxx:418
 AliITShit.cxx:419
 AliITShit.cxx:420
 AliITShit.cxx:421
 AliITShit.cxx:422
 AliITShit.cxx:423
 AliITShit.cxx:424
 AliITShit.cxx:425
 AliITShit.cxx:426
 AliITShit.cxx:427
 AliITShit.cxx:428
 AliITShit.cxx:429
 AliITShit.cxx:430
 AliITShit.cxx:431
 AliITShit.cxx:432
 AliITShit.cxx:433
 AliITShit.cxx:434
 AliITShit.cxx:435
 AliITShit.cxx:436
 AliITShit.cxx:437
 AliITShit.cxx:438
 AliITShit.cxx:439
 AliITShit.cxx:440
 AliITShit.cxx:441
 AliITShit.cxx:442
 AliITShit.cxx:443
 AliITShit.cxx:444
 AliITShit.cxx:445
 AliITShit.cxx:446
 AliITShit.cxx:447
 AliITShit.cxx:448
 AliITShit.cxx:449
 AliITShit.cxx:450
 AliITShit.cxx:451
 AliITShit.cxx:452
 AliITShit.cxx:453
 AliITShit.cxx:454
 AliITShit.cxx:455
 AliITShit.cxx:456
 AliITShit.cxx:457
 AliITShit.cxx:458
 AliITShit.cxx:459
 AliITShit.cxx:460
 AliITShit.cxx:461
 AliITShit.cxx:462
 AliITShit.cxx:463
 AliITShit.cxx:464
 AliITShit.cxx:465
 AliITShit.cxx:466
 AliITShit.cxx:467
 AliITShit.cxx:468
 AliITShit.cxx:469
 AliITShit.cxx:470
 AliITShit.cxx:471
 AliITShit.cxx:472
 AliITShit.cxx:473
 AliITShit.cxx:474
 AliITShit.cxx:475
 AliITShit.cxx:476
 AliITShit.cxx:477
 AliITShit.cxx:478
 AliITShit.cxx:479
 AliITShit.cxx:480
 AliITShit.cxx:481
 AliITShit.cxx:482
 AliITShit.cxx:483
 AliITShit.cxx:484
 AliITShit.cxx:485
 AliITShit.cxx:486
 AliITShit.cxx:487
 AliITShit.cxx:488
 AliITShit.cxx:489
 AliITShit.cxx:490
 AliITShit.cxx:491
 AliITShit.cxx:492
 AliITShit.cxx:493
 AliITShit.cxx:494
 AliITShit.cxx:495
 AliITShit.cxx:496
 AliITShit.cxx:497
 AliITShit.cxx:498
 AliITShit.cxx:499
 AliITShit.cxx:500
 AliITShit.cxx:501
 AliITShit.cxx:502
 AliITShit.cxx:503
 AliITShit.cxx:504
 AliITShit.cxx:505
 AliITShit.cxx:506
 AliITShit.cxx:507
 AliITShit.cxx:508
 AliITShit.cxx:509
 AliITShit.cxx:510
 AliITShit.cxx:511
 AliITShit.cxx:512
 AliITShit.cxx:513
 AliITShit.cxx:514
 AliITShit.cxx:515
 AliITShit.cxx:516
 AliITShit.cxx:517
 AliITShit.cxx:518
 AliITShit.cxx:519
 AliITShit.cxx:520
 AliITShit.cxx:521
 AliITShit.cxx:522
 AliITShit.cxx:523
 AliITShit.cxx:524
 AliITShit.cxx:525
 AliITShit.cxx:526
 AliITShit.cxx:527
 AliITShit.cxx:528
 AliITShit.cxx:529
 AliITShit.cxx:530
 AliITShit.cxx:531
 AliITShit.cxx:532
 AliITShit.cxx:533
 AliITShit.cxx:534
 AliITShit.cxx:535
 AliITShit.cxx:536
 AliITShit.cxx:537
 AliITShit.cxx:538
 AliITShit.cxx:539
 AliITShit.cxx:540
 AliITShit.cxx:541
 AliITShit.cxx:542
 AliITShit.cxx:543
 AliITShit.cxx:544
 AliITShit.cxx:545
 AliITShit.cxx:546
 AliITShit.cxx:547
 AliITShit.cxx:548
 AliITShit.cxx:549
 AliITShit.cxx:550
 AliITShit.cxx:551
 AliITShit.cxx:552
 AliITShit.cxx:553
 AliITShit.cxx:554
 AliITShit.cxx:555
 AliITShit.cxx:556
 AliITShit.cxx:557
 AliITShit.cxx:558
 AliITShit.cxx:559
 AliITShit.cxx:560
 AliITShit.cxx:561
 AliITShit.cxx:562
 AliITShit.cxx:563
 AliITShit.cxx:564
 AliITShit.cxx:565
 AliITShit.cxx:566
 AliITShit.cxx:567
 AliITShit.cxx:568
 AliITShit.cxx:569
 AliITShit.cxx:570
 AliITShit.cxx:571
 AliITShit.cxx:572
 AliITShit.cxx:573
 AliITShit.cxx:574
 AliITShit.cxx:575
 AliITShit.cxx:576
 AliITShit.cxx:577
 AliITShit.cxx:578
 AliITShit.cxx:579
 AliITShit.cxx:580
 AliITShit.cxx:581
 AliITShit.cxx:582
 AliITShit.cxx:583
 AliITShit.cxx:584
 AliITShit.cxx:585
 AliITShit.cxx:586
 AliITShit.cxx:587
 AliITShit.cxx:588
 AliITShit.cxx:589
 AliITShit.cxx:590
 AliITShit.cxx:591
 AliITShit.cxx:592