#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<<hit->Px()<<" "<<hit->Py()<<" "<<hit->Pz()<<std::endl;
//std::cout<<hit->Detector()<<" "<<hit->Ring()<<" "<<hit->Sector()<<" "<<hit->Strip()<<std::endl;
return kTRUE;
}
Bool_t ProcessTrackRef(AliTrackReference* trackRef, TParticle* p)
{
UShort_t det,sec,strip;
Char_t ring;
if(trackRef->DetectorId() == AliTrackReference::kFMD) {
nTracks++;
AliFMDStripIndex::Unpack(trackRef->UserId(),det,ring,sec,strip);
//std::cout<<p->Px()<<" "<<p->Py()<<" "<<p->Pz()<<std::endl;
//std::cout<<det<<" "<<ring<<" "<<sec<<" "<<strip<<std::endl;
}
return kTRUE;
}
Bool_t Finish()
{
// Int_t nTracks = 0;
/* TFile* f=TFile::Open("TrackRefs.root");
TTree* tree = (TTree*)f->Get("Event0/TreeTR");
TClonesArray* array=new TClonesArray("AliTrackReference");
tree->SetBranchAddress("TrackReferences",&array);
UShort_t det,sec,strip;
Char_t ring;
for (int i=0; i<tree->GetEntries(); i++) {
tree->GetEvent(i);
for(Int_t j = 0; j <array->GetEntriesFast();j++) {
AliTrackReference* track = static_cast<AliTrackReference*>(array->At(j));
if(track->DetectorId()==AliTrackReference::kFMD) {
nTracks++;
AliFMDStripIndex::Unpack(track->UserId(),det,ring,sec,strip);
std::cout<<track->Px()<<" "<<track->Py()<<" "<<track->Pz()<<" "<<track->UserId()<<endl;
std::cout<<det<<" "<<ring<<" "<<sec<<" "<<strip<<std::endl;
}
}
}
*/
std::cout<<nTracks<<" "<<nHits<<std::endl;
return kTRUE;
}
};
CompareTrackRefsAndHits.C:1 CompareTrackRefsAndHits.C:2 CompareTrackRefsAndHits.C:3 CompareTrackRefsAndHits.C:4 CompareTrackRefsAndHits.C:5 CompareTrackRefsAndHits.C:6 CompareTrackRefsAndHits.C:7 CompareTrackRefsAndHits.C:8 CompareTrackRefsAndHits.C:9 CompareTrackRefsAndHits.C:10 CompareTrackRefsAndHits.C:11 CompareTrackRefsAndHits.C:12 CompareTrackRefsAndHits.C:13 CompareTrackRefsAndHits.C:14 CompareTrackRefsAndHits.C:15 CompareTrackRefsAndHits.C:16 CompareTrackRefsAndHits.C:17 CompareTrackRefsAndHits.C:18 CompareTrackRefsAndHits.C:19 CompareTrackRefsAndHits.C:20 CompareTrackRefsAndHits.C:21 CompareTrackRefsAndHits.C:22 CompareTrackRefsAndHits.C:23 CompareTrackRefsAndHits.C:24 CompareTrackRefsAndHits.C:25 CompareTrackRefsAndHits.C:26 CompareTrackRefsAndHits.C:27 CompareTrackRefsAndHits.C:28 CompareTrackRefsAndHits.C:29 CompareTrackRefsAndHits.C:30 CompareTrackRefsAndHits.C:31 CompareTrackRefsAndHits.C:32 CompareTrackRefsAndHits.C:33 CompareTrackRefsAndHits.C:34 CompareTrackRefsAndHits.C:35 CompareTrackRefsAndHits.C:36 CompareTrackRefsAndHits.C:37 CompareTrackRefsAndHits.C:38 CompareTrackRefsAndHits.C:39 CompareTrackRefsAndHits.C:40 CompareTrackRefsAndHits.C:41 CompareTrackRefsAndHits.C:42 CompareTrackRefsAndHits.C:43 CompareTrackRefsAndHits.C:44 CompareTrackRefsAndHits.C:45 CompareTrackRefsAndHits.C:46 CompareTrackRefsAndHits.C:47 CompareTrackRefsAndHits.C:48 CompareTrackRefsAndHits.C:49 CompareTrackRefsAndHits.C:50 CompareTrackRefsAndHits.C:51 CompareTrackRefsAndHits.C:52 CompareTrackRefsAndHits.C:53 CompareTrackRefsAndHits.C:54 CompareTrackRefsAndHits.C:55 CompareTrackRefsAndHits.C:56 CompareTrackRefsAndHits.C:57 CompareTrackRefsAndHits.C:58 CompareTrackRefsAndHits.C:59 CompareTrackRefsAndHits.C:60 CompareTrackRefsAndHits.C:61 CompareTrackRefsAndHits.C:62 CompareTrackRefsAndHits.C:63 CompareTrackRefsAndHits.C:64 CompareTrackRefsAndHits.C:65 CompareTrackRefsAndHits.C:66 CompareTrackRefsAndHits.C:67 CompareTrackRefsAndHits.C:68 CompareTrackRefsAndHits.C:69 CompareTrackRefsAndHits.C:70 CompareTrackRefsAndHits.C:71 CompareTrackRefsAndHits.C:72 CompareTrackRefsAndHits.C:73 CompareTrackRefsAndHits.C:74 CompareTrackRefsAndHits.C:75 CompareTrackRefsAndHits.C:76 CompareTrackRefsAndHits.C:77 CompareTrackRefsAndHits.C:78 CompareTrackRefsAndHits.C:79 CompareTrackRefsAndHits.C:80 CompareTrackRefsAndHits.C:81 CompareTrackRefsAndHits.C:82 CompareTrackRefsAndHits.C:83 CompareTrackRefsAndHits.C:84 CompareTrackRefsAndHits.C:85 CompareTrackRefsAndHits.C:86 CompareTrackRefsAndHits.C:87 CompareTrackRefsAndHits.C:88 CompareTrackRefsAndHits.C:89 CompareTrackRefsAndHits.C:90 CompareTrackRefsAndHits.C:91 CompareTrackRefsAndHits.C:92 CompareTrackRefsAndHits.C:93 CompareTrackRefsAndHits.C:94