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$ */

//
// Macro for checking aliroot output and associated files contents
// Gines Martinez, Subatech June 2003
//

// ROOT includes
#include "TBranch.h"
#include "TClonesArray.h"
#include "TFile.h"
#include "TH1.h"
#include "TParticle.h"
#include "TTree.h"

// STEER includes
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliHeader.h"
#include "AliLoader.h"
#include "AliStack.h"
#include "AliESDEvent.h"

// MUON includes
#include "AliMUON.h"
#include "AliMUONData.h"
#include "AliMUONConstants.h"
#include "AliMUONRawCluster.h"
#include "AliMUONTrack.h"
#include "AliMUONTriggerTrack.h"
#include "AliESDMuonTrack.h"


void AliESDMuonTest(char * filename="galice.root", Int_t run=0){

  TClonesArray* recTracksArray;
  TClonesArray* recTrigTracksArray;
  TTree* treeE;
  // Creating Run Loader and openning file containing Hits
  AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
  if (RunLoader ==0x0) {
    printf(">>> Error : Error Opening %s file \n",filename);
    return;
  }
  
  // creating ESD file
  TFile *ef=TFile::Open("AliESD.Muon.root","RECREATE");
  if (!ef->IsOpen()) cerr<<"Can't open AliESD.root file!\n";

  treeE = new TTree("ESD", "ESD");

  AliLoader* MUONLoader = RunLoader->GetLoader("MUONLoader");
  MUONLoader->LoadTracks("READ");

  // Creating MUON data container
  AliMUONData muondata(MUONLoader,"MUON","MUON");

  // declaration  
  Int_t ievent, nevents;
  Int_t ntrackhits;
  Double_t fitfmin;
  Int_t nrectracks;

  Double_t bendingSlope, nonBendingSlope, fInverseBendingMomentum;
  Double_t fXRec, fYRec, fZRec, chi2MatchTrigger;
  Bool_t matchTrigger;

  nevents = RunLoader->GetNumberOfEvents();

  // setting pointer for tracks, triggertracks& trackparam at vertex
  AliMUONTrack* rectrack;
  AliMUONTriggerTrack* rectriggertrack;
  AliMUONTrackParam* trackParam;

  for (ievent = 0; ievent < nevents; ievent++) {

    RunLoader->GetEvent(ievent);

    // setting ESD class pointer
    AliESDEvent* event = new AliESDEvent();
    event->CreateStdContent();
    char name[255];
    event->WriteToTree(treeE);

    event->SetRunNumber(run);
    event->SetEventNumber(ievent);

    // setting ESD MUON class
    AliESDMuonTrack* ESDTrack = new  AliESDMuonTrack() ;

 // ---------------- tracks ----------------
    muondata.SetTreeAddress("RT");
    muondata.GetRecTracks();
    recTracksArray = muondata.RecTracks();
    nrectracks = (Int_t) recTracksArray->GetEntriesFast();

// --------------- trigger tracks ----------
    Long_t trigPat = 0;

    muondata.SetTreeAddress("RL");
    muondata.GetRecTriggerTracks();
    recTrigTracksArray = muondata.RecTriggerTracks();
    rectriggertrack = (AliMUONTriggerTrack*) recTrigTracksArray->First();
    trigPat = rectriggertrack->GetGTPattern();

    printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks);
 
    for (Int_t irectracks = 0; irectracks <  nrectracks;  irectracks++) {

      // ---------------- tracks ----------------
	rectrack = (AliMUONTrack*) recTracksArray->At(irectracks);    
	trackParam = rectrack->GetTrackParamAtVertex();

	bendingSlope            = trackParam->GetBendingSlope();
	nonBendingSlope         = trackParam->GetNonBendingSlope();
	//	printf(" SlopeX %f SlopeY %f\n",bendingSlope ,nonBendingSlope);

	fInverseBendingMomentum = trackParam->GetInverseBendingMomentum();
	fXRec  = trackParam->GetNonBendingCoor();
	fYRec  = trackParam->GetBendingCoor();
	//      printf(" X %f Y %f\n", fXRec, fYRec);

	fZRec  = trackParam->GetZ();
	//      printf(" Z %f\n", fZRec);

	ntrackhits = rectrack->GetNTrackHits();
	fitfmin = rectrack->GetFitFMin();
	matchTrigger     = rectrack->GetMatchTrigger();
	chi2MatchTrigger = rectrack->GetChi2MatchTrigger();

	// setting data member of ESD MUON
	ESDTrack->SetInverseBendingMomentum(fInverseBendingMomentum);
	ESDTrack->SetThetaX(TMath::ATan(nonBendingSlope));
	ESDTrack->SetThetaY(TMath::ATan(bendingSlope));
	ESDTrack->SetZ(fZRec);
	ESDTrack->SetBendingCoor(fYRec);
	ESDTrack->SetNonBendingCoor(fXRec);
	ESDTrack->SetChi2(fitfmin);
	ESDTrack->SetNHit(ntrackhits);
	ESDTrack->SetMatchTrigger(matchTrigger);
	ESDTrack->SetChi2MatchTrigger(chi2MatchTrigger);

      // storing ESD MUON Track into ESD Event & reset muondata
      event->AddMuonTrack(ESDTrack);
    }// track loop
 
    event->SetTrigger(trigPat);

    for (Int_t iTrack = 0; iTrack < event->GetNumberOfMuonTracks(); iTrack++) {
      AliESDMuonTrack* muonTrack = event->GetMuonTrack(iTrack);
      Double_t ptInv = TMath::Abs(muonTrack->GetInverseBendingMomentum());
      cout << "  ptInv: "<<ptInv <<"  nb track: "<< event->GetNumberOfMuonTracks() << endl;
    }
    treeE->Fill();
    event->Reset();
        
    muondata.ResetRecTracks();
    muondata.ResetRecTriggerTracks();

  } // end loop on event
  treeE->GetUserInfo()->Add(event);
  ef->Write();
  ef->Close();
  MUONLoader->UnloadTracks();
  delete event;

}










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