#include "iostream" #include "AliFMDInput.h" #include "AliFMDHit.h" #include "TFile.h" #include "TTree.h" #include "TClonesArray.h" #include "AliTrackReference.h" #include "AliFMDStripIndex.h" #include "TParticle.h" //Script to compare the hits and the FMD track references for one event. //To run: //>gSystem->Load("libFMDutil") //>.L CompareTrackRefsAndHits.C++ //>ReadHits t //>t.Run() //Note that the order of hits and trackrefs is different. class ReadHits : public AliFMDInput{ private: Int_t nHits; Int_t nTracks; public: ReadHits(){ AddLoad(kKinematics); AddLoad(kTracks); AddLoad(kTrackRefs); AddLoad(kHits); nHits = 0; nTracks = 0; fGAliceFile.Form("galice.root"); } Bool_t ProcessHit(AliFMDHit* hit, TParticle* p) { nHits++; // std::cout<Px()<<" "<Py()<<" "<Pz()<Detector()<<" "<Ring()<<" "<Sector()<<" "<Strip()<DetectorId() == AliTrackReference::kFMD) { nTracks++; AliFMDStripIndex::Unpack(trackRef->UserId(),det,ring,sec,strip); //std::cout<Px()<<" "<Py()<<" "<Pz()<Get("Event0/TreeTR"); TClonesArray* array=new TClonesArray("AliTrackReference"); tree->SetBranchAddress("TrackReferences",&array); UShort_t det,sec,strip; Char_t ring; for (int i=0; iGetEntries(); i++) { tree->GetEvent(i); for(Int_t j = 0; j GetEntriesFast();j++) { AliTrackReference* track = static_cast(array->At(j)); if(track->DetectorId()==AliTrackReference::kFMD) { nTracks++; AliFMDStripIndex::Unpack(track->UserId(),det,ring,sec,strip); std::cout<Px()<<" "<Py()<<" "<Pz()<<" "<UserId()<