ROOT logo
//____________________________________________________________________
//
// $Id$
//
// Script that contains a class to compare the raw data written to the
// digits it's created from.
//
// Use the script `Compile.C' to compile this class using ACLic. 
//
#include <AliLog.h>
#include <AliFMDDigit.h>
#include <AliFMDInput.h>
#include <AliFMDUShortMap.h>
#include <AliFMDParameters.h>
#include <iostream>
#include <TStyle.h>
#include <TArrayF.h>
#include <TCanvas.h>

/** @class CheckRaw
    @brief Check raw I/O
    @code 
    Root> .L Compile.C
    Root> Compile("CheckRaw.C")
    Root> CheckRaw c
    Root> c.Run();
    @endcode
    @ingroup FMD_script
 */
class CheckRaw : public AliFMDInput
{
public:
  CheckRaw()
  {
    AddLoad(kDigits);
    AddLoad(kRaw);
  }
  Bool_t Init() 
  {
    Bool_t ret = AliFMDInput::Init();
    // AliFMDGeometry* geom = AliFMDGeometry::Instance();
    // geom->Init();
    // geom->InitTransformations();
    AliFMDParameters* param = AliFMDParameters::Instance();
    param->Init();
    return ret;
  }
  Bool_t ProcessDigit(AliFMDDigit* digit)
  {
    // Cache the energy loss 
    if (!digit) return kFALSE;
    UShort_t det = digit->Detector();
    Char_t   rng = digit->Ring();
    UShort_t sec = digit->Sector();
    UShort_t str = digit->Strip();
    if (str > 511) {
      AliWarning(Form("Bad strip number %d in digit", str));
      return kTRUE;
    }
    fMap(det, rng, sec, str) = digit->Counts();
    return kTRUE;
  }
  Bool_t ProcessRawDigit(AliFMDDigit* digit)
  {
    // Cache the energy loss 
    if (!digit) return kFALSE;
    UShort_t det = digit->Detector();
    Char_t   rng = digit->Ring();
    UShort_t sec = digit->Sector();
    UShort_t str = digit->Strip();
    if (str > 511) {
      AliWarning(Form("Bad strip number %d in digit", str));
      return kTRUE;
    }
    if (digit->Counts() != fMap(det, rng, sec, str) && 
	fMap(det, rng, sec, str) != 1024) {
      AliWarning(Form("Mismatch in digit FMD%d%c[%2d,%3d] %d != %d", 
		      det, rng, sec, str, digit->Counts(), 
		      fMap(det, rng, sec, str)));
      return kTRUE;
    }
    AliDebug(1, Form("Raw digit FMD%d%c[%2d,%3D] is good", 
		     det, rng, sec, str));
    return kTRUE;
  }
protected:
  AliFMDUShortMap fMap;
};


//____________________________________________________________________
//
// EOF
//


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