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: AliACORDEReconstructor.cxx 20956 2007-09-26 14:22:18Z mrodrigu $ */
//////////////////////////////////////////////////////////////////////////////
//                                                                          //
//  Class for ACORDE reconstruction                                         //
//////////////////////////////////////////////////////////////////////////////

#include "AliRawReader.h"

#include "AliACORDEReconstructor.h"
#include "AliACORDERawStream.h"
#include "AliESDEvent.h"
#include "AliACORDEdigit.h"
#include "AliACORDERecoParam.h"

ClassImp(AliACORDEReconstructor)

AliACORDEReconstructor:: AliACORDEReconstructor():
  AliReconstructor(),
  fESDACORDE(0x0),
  fAcordeRecoParam(0x0),
  fCalibData(0x0),
  fDigitsArray(0)
{
  // Default constructor  
  // Get calibration data

  fCalibData = GetCalibData();
  fAcordeRecoParam = GetRecoParam();
}

//_______________________________________________________________________
AliACORDECalibData *AliACORDEReconstructor::GetCalibData() const
{
  return 0x0;
}
//____________________________________________________________________________
AliACORDERecoParam *AliACORDEReconstructor::GetRecoParam() const
{
  return 0x0;
}
//_____________________________________________________________________________
AliACORDEReconstructor& AliACORDEReconstructor::operator = 
  (const AliACORDEReconstructor& /*reconstructor*/)
{
// assignment operator

  Fatal("operator =", "assignment operator not implemented");
  return *this;
}

//_____________________________________________________________________________
AliACORDEReconstructor::~AliACORDEReconstructor()
{
// destructor
  delete fESDACORDE;
  delete fDigitsArray;
}

//_____________________________________________________________________________
void AliACORDEReconstructor::Init()
{
// initializer
    fESDACORDE  = new AliESDACORDE;
}

void AliACORDEReconstructor::ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const
{

  if (!digitsTree) {
    AliError("No digits tree!");
    return;
  }

  if (!fDigitsArray)
    fDigitsArray = new TClonesArray("AliACORDEdigit", 60);

  digitsTree->Branch("ACORDEdigit", &fDigitsArray);

  rawReader->Reset();
  AliACORDERawStream rawStream(rawReader);
  if (rawStream.Next()) {
    for(Int_t iChannel = 0; iChannel < 60; iChannel++) {
      Int_t  index = iChannel / 30;
      Int_t  bit   = iChannel % 30;
      if (rawStream.GetWord(index) & (1 << bit))
        new ((*fDigitsArray)[fDigitsArray->GetEntriesFast()]) AliACORDEdigit(iChannel,0);
    }
  }

  digitsTree->Fill();

  fDigitsArray->Clear();
}

void AliACORDEReconstructor::FillESD(TTree* digitsTree, TTree* /*clustersTree*/,AliESDEvent* esd) const
{

  // fills ESD with ACORDE Digits

  if (!digitsTree)
    {
      AliError("No digits tree!");
      return;
    }

  TBranch* digitBranch = digitsTree->GetBranch("ACORDEdigit");
  if (!digitBranch) {
    AliError("No ACORDE digits branch found!");
    return;
  }
  digitBranch->SetAddress(&fDigitsArray);

  digitsTree->GetEvent(0);

  Bool_t AcoHitSingle[60],AcoHitMulti[60];
  for(Int_t i = 0; i < 60; i++) { AcoHitSingle[i] = AcoHitMulti[i] = kFALSE; }

  Int_t nDigits = fDigitsArray->GetEntriesFast();
    
  for (Int_t d=0; d<nDigits; d++) {    
    AliACORDEdigit* digit = (AliACORDEdigit*) fDigitsArray->At(d);
    Int_t module = digit->GetModule();

    AcoHitSingle[module] = kTRUE;
    AcoHitMulti[module] = kTRUE;
  }  
  if (!esd) {
	AliError("NO ACORDE ESD branch found!");
	return;
}
  TString ActiveTriggerDetector = esd->GetFiredTriggerClasses();
  if (ActiveTriggerDetector.Contains("ASL")) fESDACORDE->SetACORDEBitPattern(AcoHitSingle);
  else if (ActiveTriggerDetector.Contains("AMU")) fESDACORDE->SetACORDEBitPattern(AcoHitMulti);
	else fESDACORDE->SetACORDEBitPattern(AcoHitSingle);

  if (esd)
    {
      AliDebug(1, Form("Writing ACORDE data to ESD Tree"));
      esd->SetACORDEData(fESDACORDE);
    }

  fDigitsArray->Clear();
}


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