#include "AliLog.h"
#include "TFile.h"
#include "TTree.h"
#include "TClonesArray.h"
#include "AliMuonForwardTrack.h"
TFile *inputFileWithoutBranson=0, *inputFileWithBranson=0, *outputFile=0;
TTree *fInputTreeWithoutBranson=0, *fInputTreeWithBranson=0;
TTree *fOutputTreeWithoutBranson=0, *fOutputTreeWithBranson=0;
TClonesArray *fInputMuonForwardTracksWithoutBranson=0, *fInputMuonForwardTracksWithBranson=0;
TClonesArray *fOutputMuonForwardTracksWithoutBranson=0, *fOutputMuonForwardTracksWithBranson=0;
AliMuonForwardTrack* GetTrackWithoutBranson(Int_t event, Int_t trackMCId);
//====================================================================================================================================================
void FilterMuonGlobalTracks() {
// ---- reading file of tracks reconstructed without Branson correction
inputFileWithoutBranson = new TFile("MuonGlobalTracks.withoutBransonCorrection.root");
if (!inputFileWithoutBranson || !inputFileWithoutBranson->IsOpen()) {
printf("Error opening file MuonGlobalTracks.withoutBransonCorrection.root");
return;
}
fInputTreeWithoutBranson = (TTree*) inputFileWithoutBranson->Get("AliMuonForwardTracks");
if (!fInputTreeWithoutBranson) {
printf("Error reading input tree from MuonGlobalTracks.withoutBransonCorrection.root");
return;
}
fInputTreeWithoutBranson->SetName("AliInputMuonForwardTracksWithoutBranson");
fInputMuonForwardTracksWithoutBranson = new TClonesArray("AliMuonForwardTrack");
fInputTreeWithoutBranson->SetBranchAddress("tracks", &fInputMuonForwardTracksWithoutBranson);
// ---- reading file of tracks reconstructed with Branson correction
inputFileWithBranson = new TFile("MuonGlobalTracks.withBransonCorrection.root");
if (!inputFileWithBranson || !inputFileWithBranson->IsOpen()) {
printf("Error opening file MuonGlobalTracks.withBransonCorrection.root");
return;
}
fInputTreeWithBranson = (TTree*) inputFileWithBranson->Get("AliMuonForwardTracks");
if (!fInputTreeWithBranson) {
printf("Error reading input tree from MuonGlobalTracks.withBransonCorrection.root");
return;
}
fInputTreeWithBranson->SetName("AliInputMuonForwardTracksWithBranson");
fInputMuonForwardTracksWithBranson = new TClonesArray("AliMuonForwardTrack");
fInputTreeWithBranson->SetBranchAddress("tracks", &fInputMuonForwardTracksWithBranson);
// ---- preparing output file and trees
outputFile = new TFile("MuonGlobalTracks.root","recreate");
fOutputTreeWithoutBranson = new TTree("AliMuonForwardTracksWithoutBranson", "Tree of AliMuonForwardTracks");
fOutputTreeWithBranson = new TTree("AliMuonForwardTracksWithBranson", "Tree of AliMuonForwardTracks");
fOutputMuonForwardTracksWithoutBranson = new TClonesArray("AliMuonForwardTrack");
fOutputMuonForwardTracksWithBranson = new TClonesArray("AliMuonForwardTrack");
fOutputTreeWithoutBranson -> Branch("tracks", &fOutputMuonForwardTracksWithoutBranson);
fOutputTreeWithBranson -> Branch("tracks", &fOutputMuonForwardTracksWithBranson);
// ----
Int_t nEvents = fInputTreeWithBranson->GetEntries();
for (Int_t iEv=0; iEv<nEvents; iEv++) {
fInputTreeWithBranson -> GetEvent(iEv);
printf("reading event %d\n", iEv);
Int_t nTracksOfEvent = fInputMuonForwardTracksWithBranson->GetEntries();
for (Int_t iTr=0; iTr<nTracksOfEvent; iTr++) {
AliMuonForwardTrack *trackWithBranson = (AliMuonForwardTrack*) fInputMuonForwardTracksWithBranson->At(iTr);
AliMuonForwardTrack *trackWithoutBranson = GetTrackWithoutBranson(iEv, trackWithBranson->GetTrackMCId());
if (!trackWithoutBranson) {
printf("Event %d, track %d : track without Branson not available!\n", iEv, iTr);
continue;
}
new ((*fOutputMuonForwardTracksWithBranson)[fOutputMuonForwardTracksWithBranson->GetEntries()]) AliMuonForwardTrack(*trackWithBranson);
new ((*fOutputMuonForwardTracksWithoutBranson)[fOutputMuonForwardTracksWithoutBranson->GetEntries()]) AliMuonForwardTrack(*trackWithoutBranson);
}
fOutputTreeWithBranson -> Fill();
fOutputTreeWithoutBranson -> Fill();
fOutputMuonForwardTracksWithBranson -> Delete();
fOutputMuonForwardTracksWithoutBranson -> Delete();
fInputMuonForwardTracksWithBranson -> Delete();
fInputMuonForwardTracksWithoutBranson -> Delete();
}
outputFile -> cd();
fOutputTreeWithBranson -> Write();
fOutputTreeWithoutBranson -> Write();
outputFile -> Close();
}
//====================================================================================================================================================
AliMuonForwardTrack* GetTrackWithoutBranson(Int_t event, Int_t trackMCId) {
fInputTreeWithoutBranson -> GetEvent(event);
Int_t nTracksOfEvent = fInputMuonForwardTracksWithoutBranson->GetEntries();
for (Int_t iTr=0; iTr<nTracksOfEvent; iTr++) {
AliMuonForwardTrack *trackWithoutBranson = (AliMuonForwardTrack*) fInputMuonForwardTracksWithoutBranson->At(iTr);
if (trackWithoutBranson->GetTrackMCId() == trackMCId) return trackWithoutBranson;
}
return NULL;
}
//====================================================================================================================================================
FilterMuonGlobalTracks.C:1 FilterMuonGlobalTracks.C:2 FilterMuonGlobalTracks.C:3 FilterMuonGlobalTracks.C:4 FilterMuonGlobalTracks.C:5 FilterMuonGlobalTracks.C:6 FilterMuonGlobalTracks.C:7 FilterMuonGlobalTracks.C:8 FilterMuonGlobalTracks.C:9 FilterMuonGlobalTracks.C:10 FilterMuonGlobalTracks.C:11 FilterMuonGlobalTracks.C:12 FilterMuonGlobalTracks.C:13 FilterMuonGlobalTracks.C:14 FilterMuonGlobalTracks.C:15 FilterMuonGlobalTracks.C:16 FilterMuonGlobalTracks.C:17 FilterMuonGlobalTracks.C:18 FilterMuonGlobalTracks.C:19 FilterMuonGlobalTracks.C:20 FilterMuonGlobalTracks.C:21 FilterMuonGlobalTracks.C:22 FilterMuonGlobalTracks.C:23 FilterMuonGlobalTracks.C:24 FilterMuonGlobalTracks.C:25 FilterMuonGlobalTracks.C:26 FilterMuonGlobalTracks.C:27 FilterMuonGlobalTracks.C:28 FilterMuonGlobalTracks.C:29 FilterMuonGlobalTracks.C:30 FilterMuonGlobalTracks.C:31 FilterMuonGlobalTracks.C:32 FilterMuonGlobalTracks.C:33 FilterMuonGlobalTracks.C:34 FilterMuonGlobalTracks.C:35 FilterMuonGlobalTracks.C:36 FilterMuonGlobalTracks.C:37 FilterMuonGlobalTracks.C:38 FilterMuonGlobalTracks.C:39 FilterMuonGlobalTracks.C:40 FilterMuonGlobalTracks.C:41 FilterMuonGlobalTracks.C:42 FilterMuonGlobalTracks.C:43 FilterMuonGlobalTracks.C:44 FilterMuonGlobalTracks.C:45 FilterMuonGlobalTracks.C:46 FilterMuonGlobalTracks.C:47 FilterMuonGlobalTracks.C:48 FilterMuonGlobalTracks.C:49 FilterMuonGlobalTracks.C:50 FilterMuonGlobalTracks.C:51 FilterMuonGlobalTracks.C:52 FilterMuonGlobalTracks.C:53 FilterMuonGlobalTracks.C:54 FilterMuonGlobalTracks.C:55 FilterMuonGlobalTracks.C:56 FilterMuonGlobalTracks.C:57 FilterMuonGlobalTracks.C:58 FilterMuonGlobalTracks.C:59 FilterMuonGlobalTracks.C:60 FilterMuonGlobalTracks.C:61 FilterMuonGlobalTracks.C:62 FilterMuonGlobalTracks.C:63 FilterMuonGlobalTracks.C:64 FilterMuonGlobalTracks.C:65 FilterMuonGlobalTracks.C:66 FilterMuonGlobalTracks.C:67 FilterMuonGlobalTracks.C:68 FilterMuonGlobalTracks.C:69 FilterMuonGlobalTracks.C:70 FilterMuonGlobalTracks.C:71 FilterMuonGlobalTracks.C:72 FilterMuonGlobalTracks.C:73 FilterMuonGlobalTracks.C:74 FilterMuonGlobalTracks.C:75 FilterMuonGlobalTracks.C:76 FilterMuonGlobalTracks.C:77 FilterMuonGlobalTracks.C:78 FilterMuonGlobalTracks.C:79 FilterMuonGlobalTracks.C:80 FilterMuonGlobalTracks.C:81 FilterMuonGlobalTracks.C:82 FilterMuonGlobalTracks.C:83 FilterMuonGlobalTracks.C:84 FilterMuonGlobalTracks.C:85 FilterMuonGlobalTracks.C:86 FilterMuonGlobalTracks.C:87 FilterMuonGlobalTracks.C:88 FilterMuonGlobalTracks.C:89 FilterMuonGlobalTracks.C:90 FilterMuonGlobalTracks.C:91 FilterMuonGlobalTracks.C:92 FilterMuonGlobalTracks.C:93 FilterMuonGlobalTracks.C:94 FilterMuonGlobalTracks.C:95 FilterMuonGlobalTracks.C:96 FilterMuonGlobalTracks.C:97 FilterMuonGlobalTracks.C:98 FilterMuonGlobalTracks.C:99 FilterMuonGlobalTracks.C:100 FilterMuonGlobalTracks.C:101 FilterMuonGlobalTracks.C:102 FilterMuonGlobalTracks.C:103 FilterMuonGlobalTracks.C:104 FilterMuonGlobalTracks.C:105 FilterMuonGlobalTracks.C:106 FilterMuonGlobalTracks.C:107 FilterMuonGlobalTracks.C:108 FilterMuonGlobalTracks.C:109 FilterMuonGlobalTracks.C:110 FilterMuonGlobalTracks.C:111 FilterMuonGlobalTracks.C:112 FilterMuonGlobalTracks.C:113 FilterMuonGlobalTracks.C:114 FilterMuonGlobalTracks.C:115 FilterMuonGlobalTracks.C:116 FilterMuonGlobalTracks.C:117 FilterMuonGlobalTracks.C:118