ROOT logo
// $Id$

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

/// \ingroup evemacros
/// \file muon_raw.C
/// \brief Macro to visualise rootified raw-data from MUON spectrometer 
/// (both tracker and trigger).
///
/// Use muon_raw() in order to run it
///
/// Needs that alieve_init() is already called
///
/// \author P. Pillot, L. Aphecetche; Subatech

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TStyle.h>
#include <Riostream.h>
#include <TROOT.h>
#include <TEveManager.h>
#include <TEveUtil.h>
#include <TEveQuadSet.h>

#include <AliLog.h>
#include <AliMUONDigitMaker.h>
#include <AliMUONDigitStoreV2R.h>
#include <AliMpCDB.h>
#include <AliRawReader.h>
#include <AliEveEventManager.h>
#endif

void muon_raw()
{
  // load mapping
  AliMpCDB::LoadAll(kFALSE);

  // load raw data
  AliRawReader* reader = AliEveEventManager::AssertRawReader();
/*  if ( reader->GetEventHeader() ) 
    AliInfoGeneral("muon_raw.C", Form("RUN %d EVENT %d", reader->GetRunNumber(),reader->GetEventIndex()) );
  else
    AliInfoGeneral("muon_raw.C", "NO EVENT HEADER ?");
*/  
  // convert raw to digits
  AliMUONDigitMaker digitMaker;
  digitMaker.SetMakeTriggerDigits(kTRUE);
  AliMUONDigitStoreV2R digitStore;
  digitMaker.Raw2Digits(reader,&digitStore);
  if (digitStore.GetSize() == 0 && !gEve->GetKeepEmptyCont()) return;
  
  // container for graphic representation of digits
  TEveElementList* cont = new TEveElementList("MUON Raw digits");
  cont->SetTitle(Form("N=%d",digitStore.GetSize()));
  
  TEveQuadSet* bending = new TEveQuadSet(TEveQuadSet::kQT_RectangleXY, kFALSE, 32);
  bending->SetName("Bending");
  bending->SetRenderMode(TEveDigitSet::kRM_Fill);
  bending->SetPickable(kFALSE);
  cont->AddElement(bending);
  
  TEveQuadSet* nonBending = new TEveQuadSet(TEveQuadSet::kQT_RectangleXY, kFALSE, 32);
  nonBending->SetName("Non bending");
  nonBending->SetRenderMode(TEveDigitSet::kRM_Line);
  nonBending->SetPickable(kFALSE);
  cont->AddElement(nonBending);
  
  // add digits to the containers
  TEveUtil::LoadMacro("muon_digits.C+");
  TIter next(digitStore.CreateIterator());
  gROOT->ProcessLine(Form("add_muon_digits((TIter*)%p, (TEveQuadSet*)%p, (TEveQuadSet*)%p, kTRUE);",
			  &next, bending, nonBending));
  
  // set containers' title
  bending->SetTitle(Form("N=%d",bending->GetPlex()->Size()));
  nonBending->SetTitle(Form("N=%d",nonBending->GetPlex()->Size()));
  
  // automatic scaling
  gStyle->SetPalette(1);
  bending->AssertPalette();
  nonBending->AssertPalette();
  
  // add graphic containers
  gEve->DisableRedraw();
  gEve->AddElement(cont);
  gEve->EnableRedraw();
  gEve->Redraw3D();
}
 muon_raw.C:1
 muon_raw.C:2
 muon_raw.C:3
 muon_raw.C:4
 muon_raw.C:5
 muon_raw.C:6
 muon_raw.C:7
 muon_raw.C:8
 muon_raw.C:9
 muon_raw.C:10
 muon_raw.C:11
 muon_raw.C:12
 muon_raw.C:13
 muon_raw.C:14
 muon_raw.C:15
 muon_raw.C:16
 muon_raw.C:17
 muon_raw.C:18
 muon_raw.C:19
 muon_raw.C:20
 muon_raw.C:21
 muon_raw.C:22
 muon_raw.C:23
 muon_raw.C:24
 muon_raw.C:25
 muon_raw.C:26
 muon_raw.C:27
 muon_raw.C:28
 muon_raw.C:29
 muon_raw.C:30
 muon_raw.C:31
 muon_raw.C:32
 muon_raw.C:33
 muon_raw.C:34
 muon_raw.C:35
 muon_raw.C:36
 muon_raw.C:37
 muon_raw.C:38
 muon_raw.C:39
 muon_raw.C:40
 muon_raw.C:41
 muon_raw.C:42
 muon_raw.C:43
 muon_raw.C:44
 muon_raw.C:45
 muon_raw.C:46
 muon_raw.C:47
 muon_raw.C:48
 muon_raw.C:49
 muon_raw.C:50
 muon_raw.C:51
 muon_raw.C:52
 muon_raw.C:53
 muon_raw.C:54
 muon_raw.C:55
 muon_raw.C:56
 muon_raw.C:57
 muon_raw.C:58
 muon_raw.C:59
 muon_raw.C:60
 muon_raw.C:61
 muon_raw.C:62
 muon_raw.C:63
 muon_raw.C:64
 muon_raw.C:65
 muon_raw.C:66
 muon_raw.C:67
 muon_raw.C:68
 muon_raw.C:69
 muon_raw.C:70
 muon_raw.C:71
 muon_raw.C:72
 muon_raw.C:73
 muon_raw.C:74
 muon_raw.C:75
 muon_raw.C:76
 muon_raw.C:77
 muon_raw.C:78
 muon_raw.C:79
 muon_raw.C:80
 muon_raw.C:81
 muon_raw.C:82
 muon_raw.C:83
 muon_raw.C:84
 muon_raw.C:85
 muon_raw.C:86
 muon_raw.C:87
 muon_raw.C:88
 muon_raw.C:89
 muon_raw.C:90
 muon_raw.C:91
 muon_raw.C:92