//____________________________________________________________________
//
// ========================
//  Atlas TRT digitisation
// ========================
//
// Overview of the identifiers for the TRT detector elements.
// ----------------------------------------------------------
//
// Definition and the range of values for the levels of the
// identifiers are:
//
// element           range              meaning
// -------           -----              -------
//
// fEndCapOrBarrel   +/- 1            positive/negative barrel 
//                   +/- 2            positive/negative endcap 
//                   0 to 17          endcap wheel range 
//
// fPhiSector        0 to 31          for barrel modular geometry 
//                      0             for barrel "simple layer" geometry 
//                   0 to 31          for endcap 
//
// fModuleOrWheel    0 to 2           barrel module layer number 
//                   0 to 72          is straw layer for barrel "simple layer" geometry 
//
// fStrawLayer       0 to 18 (19)     for barrel module 0 for modular (layer) geometry 
//                   0 to 23          for barrel module 1       "        "      " 
//                   0 to 29 (28)     for barrel module 2       "        "      " 
//                       0            for barrel "simple layer" geometry 
//                   0 to 15 or 7     for ec (middle modules have 8 layers,  
//                                           224 total layers in ec) 
//
// fStraw            0 to <28         for barrel, depends upon layer 
//                   0 to <981        for barrel "simple layer" geometry 
//                   0 to <23         for ec (fewer for last 4 modules/wheels due 
//                                           to smaller inner radius) 
//
//  

//
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlTRTDigit.cxx,v 1.4 2010/12/23 15:17:49 herrberg Exp $
// Copyright: 2008 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlTRTDigit
#include <AtlTRTDigit.h>
#endif
#include <iostream>
#ifndef ROOT_TString
#include <TString.h>
#endif


using namespace std;

#ifndef __CINT__
ClassImp(AtlTRTDigit);
#endif

//____________________________________________________________________

AtlTRTDigit::AtlTRTDigit() {
    //
    // Default constructor
    //
}

//____________________________________________________________________

AtlTRTDigit::AtlTRTDigit(Int_t Id, Float_t DriftTime, Float_t DriftRadius,
			 UInt_t Digit) :
    HepDriftChamberDigit(Id, DriftTime, DriftRadius), fDigit(Digit), 
    fEndCapOrBarrel(0), fPhiSector(), fModuleOrWheel(0), fStrawLayer(0),
    fStraw(0) {
    //
    // Normal constructor
    //
}

//____________________________________________________________________

AtlTRTDigit::~AtlTRTDigit() {
    //
    // Default destructor
    //
}

//____________________________________________________________________

void AtlTRTDigit::Clear(Option_t* option) {
    //
    // Clear this object
    //
    HepDriftChamberDigit::Clear(option);    
    fDigit          = 0;
    fEndCapOrBarrel = 0;
    fPhiSector      = 0;
    fModuleOrWheel  = 0;
    fStrawLayer     = 0;
    fStraw          = 0;
}

//____________________________________________________________________

void AtlTRTDigit::Print(Option_t* option) const {
    //
    // Print out TRT hit
    //
    // Options available:
    //   "nohead" - No header containing the variable names is
    //              displayed. Useful when printing a whole table
    //              for a list of TRT hits
    //
    TString opt = option;
    opt.ToLower();

    // Print header
    if( !opt.Contains("nohead") ) PrintHeader();
        
    // Print
    cout.setf(ios::showpoint | ios::fixed, ios::floatfield);
    cout.precision(3);
    cout.width(4);  cout << fId;
    cout.width(14); cout << DriftTime();
    cout.width(15); cout << DriftRadius();
    cout.width(13); cout << FittedRadius();
    cout.width(4);  cout << "" ;
    
    // Print bit pattern
    for(Int_t bit=1; bit<28;++bit){
	if( bit == 1 || bit == 10 || bit == 19 ) cout << " ";
	cout << ( (fDigit >> (27-bit)) & 0x1 );
	if( bit == 1 || bit == 10 || bit == 19 ) cout << " ";
    }

    // Print HT flag
    if ( IsHighThrHit() ) cout << " HT    ";
    else cout << "       ";
    
    // Print Time-over-Threshold
    cout.width(6); cout << TimeOverThreshold("prsnt") << endl;
    
    // Print footer
    if ( !opt.Contains("nohead") ) PrintFooter();
  
}

//____________________________________________________________________

void AtlTRTDigit::PrintHeader() {
    //
    // Print information header
    //
    cout << "--------------------------------------------------------------------------------------------------"
	 << endl
	 << "  Id  T_Drift (ns)  R_Drift (mum)  R_Fit (mum)  Digit: BC 1       BC 2       BC 3        ToT (ns)"
	 << endl
	 << "--------------------------------------------------------------------------------------------------"
	 << endl;
}

//____________________________________________________________________

void AtlTRTDigit::PrintFooter() {
    //
    // Print footer
    //
    cout << "--------------------------------------------------------------------------------------------------"
	 << endl;
}



 AtlTRTDigit.cxx:1
 AtlTRTDigit.cxx:2
 AtlTRTDigit.cxx:3
 AtlTRTDigit.cxx:4
 AtlTRTDigit.cxx:5
 AtlTRTDigit.cxx:6
 AtlTRTDigit.cxx:7
 AtlTRTDigit.cxx:8
 AtlTRTDigit.cxx:9
 AtlTRTDigit.cxx:10
 AtlTRTDigit.cxx:11
 AtlTRTDigit.cxx:12
 AtlTRTDigit.cxx:13
 AtlTRTDigit.cxx:14
 AtlTRTDigit.cxx:15
 AtlTRTDigit.cxx:16
 AtlTRTDigit.cxx:17
 AtlTRTDigit.cxx:18
 AtlTRTDigit.cxx:19
 AtlTRTDigit.cxx:20
 AtlTRTDigit.cxx:21
 AtlTRTDigit.cxx:22
 AtlTRTDigit.cxx:23
 AtlTRTDigit.cxx:24
 AtlTRTDigit.cxx:25
 AtlTRTDigit.cxx:26
 AtlTRTDigit.cxx:27
 AtlTRTDigit.cxx:28
 AtlTRTDigit.cxx:29
 AtlTRTDigit.cxx:30
 AtlTRTDigit.cxx:31
 AtlTRTDigit.cxx:32
 AtlTRTDigit.cxx:33
 AtlTRTDigit.cxx:34
 AtlTRTDigit.cxx:35
 AtlTRTDigit.cxx:36
 AtlTRTDigit.cxx:37
 AtlTRTDigit.cxx:38
 AtlTRTDigit.cxx:39
 AtlTRTDigit.cxx:40
 AtlTRTDigit.cxx:41
 AtlTRTDigit.cxx:42
 AtlTRTDigit.cxx:43
 AtlTRTDigit.cxx:44
 AtlTRTDigit.cxx:45
 AtlTRTDigit.cxx:46
 AtlTRTDigit.cxx:47
 AtlTRTDigit.cxx:48
 AtlTRTDigit.cxx:49
 AtlTRTDigit.cxx:50
 AtlTRTDigit.cxx:51
 AtlTRTDigit.cxx:52
 AtlTRTDigit.cxx:53
 AtlTRTDigit.cxx:54
 AtlTRTDigit.cxx:55
 AtlTRTDigit.cxx:56
 AtlTRTDigit.cxx:57
 AtlTRTDigit.cxx:58
 AtlTRTDigit.cxx:59
 AtlTRTDigit.cxx:60
 AtlTRTDigit.cxx:61
 AtlTRTDigit.cxx:62
 AtlTRTDigit.cxx:63
 AtlTRTDigit.cxx:64
 AtlTRTDigit.cxx:65
 AtlTRTDigit.cxx:66
 AtlTRTDigit.cxx:67
 AtlTRTDigit.cxx:68
 AtlTRTDigit.cxx:69
 AtlTRTDigit.cxx:70
 AtlTRTDigit.cxx:71
 AtlTRTDigit.cxx:72
 AtlTRTDigit.cxx:73
 AtlTRTDigit.cxx:74
 AtlTRTDigit.cxx:75
 AtlTRTDigit.cxx:76
 AtlTRTDigit.cxx:77
 AtlTRTDigit.cxx:78
 AtlTRTDigit.cxx:79
 AtlTRTDigit.cxx:80
 AtlTRTDigit.cxx:81
 AtlTRTDigit.cxx:82
 AtlTRTDigit.cxx:83
 AtlTRTDigit.cxx:84
 AtlTRTDigit.cxx:85
 AtlTRTDigit.cxx:86
 AtlTRTDigit.cxx:87
 AtlTRTDigit.cxx:88
 AtlTRTDigit.cxx:89
 AtlTRTDigit.cxx:90
 AtlTRTDigit.cxx:91
 AtlTRTDigit.cxx:92
 AtlTRTDigit.cxx:93
 AtlTRTDigit.cxx:94
 AtlTRTDigit.cxx:95
 AtlTRTDigit.cxx:96
 AtlTRTDigit.cxx:97
 AtlTRTDigit.cxx:98
 AtlTRTDigit.cxx:99
 AtlTRTDigit.cxx:100
 AtlTRTDigit.cxx:101
 AtlTRTDigit.cxx:102
 AtlTRTDigit.cxx:103
 AtlTRTDigit.cxx:104
 AtlTRTDigit.cxx:105
 AtlTRTDigit.cxx:106
 AtlTRTDigit.cxx:107
 AtlTRTDigit.cxx:108
 AtlTRTDigit.cxx:109
 AtlTRTDigit.cxx:110
 AtlTRTDigit.cxx:111
 AtlTRTDigit.cxx:112
 AtlTRTDigit.cxx:113
 AtlTRTDigit.cxx:114
 AtlTRTDigit.cxx:115
 AtlTRTDigit.cxx:116
 AtlTRTDigit.cxx:117
 AtlTRTDigit.cxx:118
 AtlTRTDigit.cxx:119
 AtlTRTDigit.cxx:120
 AtlTRTDigit.cxx:121
 AtlTRTDigit.cxx:122
 AtlTRTDigit.cxx:123
 AtlTRTDigit.cxx:124
 AtlTRTDigit.cxx:125
 AtlTRTDigit.cxx:126
 AtlTRTDigit.cxx:127
 AtlTRTDigit.cxx:128
 AtlTRTDigit.cxx:129
 AtlTRTDigit.cxx:130
 AtlTRTDigit.cxx:131
 AtlTRTDigit.cxx:132
 AtlTRTDigit.cxx:133
 AtlTRTDigit.cxx:134
 AtlTRTDigit.cxx:135
 AtlTRTDigit.cxx:136
 AtlTRTDigit.cxx:137
 AtlTRTDigit.cxx:138
 AtlTRTDigit.cxx:139
 AtlTRTDigit.cxx:140
 AtlTRTDigit.cxx:141
 AtlTRTDigit.cxx:142
 AtlTRTDigit.cxx:143
 AtlTRTDigit.cxx:144
 AtlTRTDigit.cxx:145
 AtlTRTDigit.cxx:146
 AtlTRTDigit.cxx:147
 AtlTRTDigit.cxx:148
 AtlTRTDigit.cxx:149
 AtlTRTDigit.cxx:150
 AtlTRTDigit.cxx:151
 AtlTRTDigit.cxx:152
 AtlTRTDigit.cxx:153
 AtlTRTDigit.cxx:154
 AtlTRTDigit.cxx:155
 AtlTRTDigit.cxx:156
 AtlTRTDigit.cxx:157
 AtlTRTDigit.cxx:158
 AtlTRTDigit.cxx:159
 AtlTRTDigit.cxx:160
 AtlTRTDigit.cxx:161
 AtlTRTDigit.cxx:162
 AtlTRTDigit.cxx:163
 AtlTRTDigit.cxx:164
 AtlTRTDigit.cxx:165
 AtlTRTDigit.cxx:166
 AtlTRTDigit.cxx:167
 AtlTRTDigit.cxx:168
 AtlTRTDigit.cxx:169
 AtlTRTDigit.cxx:170
 AtlTRTDigit.cxx:171
 AtlTRTDigit.cxx:172
 AtlTRTDigit.cxx:173
 AtlTRTDigit.cxx:174