ROOT logo
#ifndef ALIITSDigitUpgrade_H
#define ALIITSDigitUpgrade_H
/* Copyright(c) 2004-2006, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice     */
/////////////////////////////////////////////////////////////
//              Authors A.Mastroserio			   //		
//			C.Terrevoli			   // 
//			annalisa.mastroserio@cern.ch	   //
//			cristina.terrevoli@cern.ch         //
// 							   //
// 		Digit class for ITS upgrade                //
//							   //
/////////////////////////////////////////////////////////////

/* $Id$ */

#include <AliDigit.h>
#include <TArrayI.h>
//______________________________________________________________________
class AliITSDigitUpgrade: public AliDigit {

 public:
  AliITSDigitUpgrade();
  AliITSDigitUpgrade(Int_t *digits);
  AliITSDigitUpgrade(ULong_t pixid, Float_t eloss);
  AliITSDigitUpgrade(const AliITSDigitUpgrade &d); //copy ctor

  virtual ~AliITSDigitUpgrade() {/*destructor*/};
  //____________________________________________________________________________________________________
    
  enum {kMaxLab=12}; // maximum number of MC labels associated to the digit (4 times as much as can be stored in the "mother class")

  void AddTidOffset(Int_t offset) {for(Int_t i=0; i<kMaxLab; i++) if (fTrackIdMC[i]>-1) fTrackIdMC[i]+=offset;} //needed for merging
    
  // setters
       
  void SetSignal(Float_t sig) {fSignal = sig;}
  void SetLayer(Int_t layer) {fNLayer = layer;}
  void SetModule(Int_t module) {fModule = module ;}
  void SetNTracksIdMC(Int_t nLabels) {fNTracksIdMC = nLabels;}
  void SetNelectrons(Double_t nele) {fNelectrons = nele;}


  void SetTrackID(Int_t tid) {fTrackIdMC[0]=tid; }
  void SetTids(Int_t tids[kMaxLab]){ for(Int_t i=0; i<kMaxLab; i++) fTrackIdMC[i]=tids[i];} // tracks participating to form the digit
  void AddTrackID(Int_t tid); 
  void SetPixId(ULong_t nx, ULong_t nz) {fPixId = 100000*nx + nz;}
  void SetPixId(ULong_t pixid){fPixId = pixid;}

  void SetSignalID(Float_t eloss[kMaxLab]){for(Int_t i=0; i< kMaxLab; i++) fSignalID[i]=eloss[i];}

  // getters
    
  Float_t  GetSignal() const {return fSignal;}
  Int_t    GetLayer() const {return fNLayer;}
  Int_t    GetModule() const {return fModule;}
  Double_t GetNelectrons() const {return fNelectrons;}
  ULong_t  GetPixId(){return fPixId;}
  Int_t    GetxPixelNumber() const {return fPixId/100000;}
  Int_t    GetzPixelNumber() const {return fPixId%100000;}
  Int_t    GetNTracksIdMC() const {return fNTracksIdMC;}
  Int_t*   GetTracks() {return fTrackIdMC; }
  Int_t    GetTrackID(Int_t ipart) const  {if(ipart<0 || ipart>=kMaxLab) return -1; else return fTrackIdMC[ipart];}
  Float_t  GetSignalID(Int_t ipart) const {if(ipart<0 || ipart>=kMaxLab) return -1; else return fSignalID[ipart];}
    
  void GetPosition(Int_t ilayer, Int_t nx, Int_t nz, Double_t &xloc, Double_t &zloc);
    
  void PrintInfo(); 
  inline Int_t   Compare     (const TObject *pObj)const;
  Bool_t IsSortable() const {return kTRUE;}
   
 protected:
    
  ULong_t fPixId;    // ID number of the fired pixel in a module
  Float_t fSignal;   // Signal as Eloss in the medium
  Int_t fNLayer;     // Layer 
  Int_t fModule;     // Module in the layer
  Double_t fNelectrons; // released charge due to E loss
  Int_t fNTracksIdMC;  // Number of MC particles which produced the Digit
  Int_t fTrackIdMC[kMaxLab];  // MC track labels 
  Float_t fSignalID[kMaxLab]; // E loss
  

 private:
  AliITSDigitUpgrade &operator=(const AliITSDigitUpgrade &);    // not implemented


  ClassDef(AliITSDigitUpgrade,3)   // Simulated digit object for ITS upgrade



};
#endif

Int_t AliITSDigitUpgrade::Compare(const TObject *pObj) const
{
  // Arguments: pObj - pointer to object to compare with
  //        

  Int_t result = -1;
  if (fModule>((AliITSDigitUpgrade*)pObj)->GetModule()) result=1;      
  
  else  if(fModule==((AliITSDigitUpgrade*)pObj)->GetModule()){
    if     (fPixId==((AliITSDigitUpgrade*)pObj)->GetPixId()) result=0;
    else if(fPixId >((AliITSDigitUpgrade*)pObj)->GetPixId()) result=1;
  }
  return result;

}


 AliITSDigitUpgrade.h:1
 AliITSDigitUpgrade.h:2
 AliITSDigitUpgrade.h:3
 AliITSDigitUpgrade.h:4
 AliITSDigitUpgrade.h:5
 AliITSDigitUpgrade.h:6
 AliITSDigitUpgrade.h:7
 AliITSDigitUpgrade.h:8
 AliITSDigitUpgrade.h:9
 AliITSDigitUpgrade.h:10
 AliITSDigitUpgrade.h:11
 AliITSDigitUpgrade.h:12
 AliITSDigitUpgrade.h:13
 AliITSDigitUpgrade.h:14
 AliITSDigitUpgrade.h:15
 AliITSDigitUpgrade.h:16
 AliITSDigitUpgrade.h:17
 AliITSDigitUpgrade.h:18
 AliITSDigitUpgrade.h:19
 AliITSDigitUpgrade.h:20
 AliITSDigitUpgrade.h:21
 AliITSDigitUpgrade.h:22
 AliITSDigitUpgrade.h:23
 AliITSDigitUpgrade.h:24
 AliITSDigitUpgrade.h:25
 AliITSDigitUpgrade.h:26
 AliITSDigitUpgrade.h:27
 AliITSDigitUpgrade.h:28
 AliITSDigitUpgrade.h:29
 AliITSDigitUpgrade.h:30
 AliITSDigitUpgrade.h:31
 AliITSDigitUpgrade.h:32
 AliITSDigitUpgrade.h:33
 AliITSDigitUpgrade.h:34
 AliITSDigitUpgrade.h:35
 AliITSDigitUpgrade.h:36
 AliITSDigitUpgrade.h:37
 AliITSDigitUpgrade.h:38
 AliITSDigitUpgrade.h:39
 AliITSDigitUpgrade.h:40
 AliITSDigitUpgrade.h:41
 AliITSDigitUpgrade.h:42
 AliITSDigitUpgrade.h:43
 AliITSDigitUpgrade.h:44
 AliITSDigitUpgrade.h:45
 AliITSDigitUpgrade.h:46
 AliITSDigitUpgrade.h:47
 AliITSDigitUpgrade.h:48
 AliITSDigitUpgrade.h:49
 AliITSDigitUpgrade.h:50
 AliITSDigitUpgrade.h:51
 AliITSDigitUpgrade.h:52
 AliITSDigitUpgrade.h:53
 AliITSDigitUpgrade.h:54
 AliITSDigitUpgrade.h:55
 AliITSDigitUpgrade.h:56
 AliITSDigitUpgrade.h:57
 AliITSDigitUpgrade.h:58
 AliITSDigitUpgrade.h:59
 AliITSDigitUpgrade.h:60
 AliITSDigitUpgrade.h:61
 AliITSDigitUpgrade.h:62
 AliITSDigitUpgrade.h:63
 AliITSDigitUpgrade.h:64
 AliITSDigitUpgrade.h:65
 AliITSDigitUpgrade.h:66
 AliITSDigitUpgrade.h:67
 AliITSDigitUpgrade.h:68
 AliITSDigitUpgrade.h:69
 AliITSDigitUpgrade.h:70
 AliITSDigitUpgrade.h:71
 AliITSDigitUpgrade.h:72
 AliITSDigitUpgrade.h:73
 AliITSDigitUpgrade.h:74
 AliITSDigitUpgrade.h:75
 AliITSDigitUpgrade.h:76
 AliITSDigitUpgrade.h:77
 AliITSDigitUpgrade.h:78
 AliITSDigitUpgrade.h:79
 AliITSDigitUpgrade.h:80
 AliITSDigitUpgrade.h:81
 AliITSDigitUpgrade.h:82
 AliITSDigitUpgrade.h:83
 AliITSDigitUpgrade.h:84
 AliITSDigitUpgrade.h:85
 AliITSDigitUpgrade.h:86
 AliITSDigitUpgrade.h:87
 AliITSDigitUpgrade.h:88
 AliITSDigitUpgrade.h:89
 AliITSDigitUpgrade.h:90
 AliITSDigitUpgrade.h:91
 AliITSDigitUpgrade.h:92
 AliITSDigitUpgrade.h:93
 AliITSDigitUpgrade.h:94
 AliITSDigitUpgrade.h:95
 AliITSDigitUpgrade.h:96
 AliITSDigitUpgrade.h:97
 AliITSDigitUpgrade.h:98
 AliITSDigitUpgrade.h:99
 AliITSDigitUpgrade.h:100
 AliITSDigitUpgrade.h:101
 AliITSDigitUpgrade.h:102
 AliITSDigitUpgrade.h:103
 AliITSDigitUpgrade.h:104
 AliITSDigitUpgrade.h:105
 AliITSDigitUpgrade.h:106
 AliITSDigitUpgrade.h:107
 AliITSDigitUpgrade.h:108
 AliITSDigitUpgrade.h:109
 AliITSDigitUpgrade.h:110
 AliITSDigitUpgrade.h:111