3 gROOT->LoadMacro(
"$VMCWORKDIR/gconfig/rootlogon.C");
6 TString inPidFile =
"pid_sttcombi.root";
8 TString inAlgoFile =
"algo_sttcombi.root";
11 TFile *
inFile = TFile::Open(inPidFile,
"READ");
13 TTree *
tree=(TTree *) inFile->Get(
"pndsim") ;
14 tree->AddFriend(
"pndsim",inSimFile);
15 tree->AddFriend(
"pndsim",inDigiFile);
17 TClonesArray* cand_array=
new TClonesArray(
"PndPidCandidate");
18 tree->SetBranchAddress(
"PidChargedCand", &cand_array);
20 TClonesArray*
mc_array=
new TClonesArray(
"PndMCTrack");
21 tree->SetBranchAddress(
"MCTrack", &mc_array);
22 TClonesArray* mdtp_array=
new TClonesArray(
"PndMdtPoint");
23 tree->SetBranchAddress(
"MdtPoint", &mdtp_array);
24 TClonesArray* mdth_array=
new TClonesArray(
"PndMdtHit");
25 tree->SetBranchAddress(
"MdtHit", &mdth_array);
26 TClonesArray* mdtt_array=
new TClonesArray(
"PndMdtTrk");
27 tree->SetBranchAddress(
"MdtTrk", &mdtt_array);
29 TFile *
out = TFile::Open(
"out_test.root",
"RECREATE");
30 TNtuple *nt =
new TNtuple(
"nt",
"nt",
"evt:mc_p:mc_theta:mc_phi:mc_pid:p:theta:phi:mult");
32 if (nEntries==0) nEntries = tree->GetEntriesFast();
33 for (Int_t j=0; j< nEntries; j++){
36 cout <<
"processing event " << j <<
"\n";
38 Float_t mc_mom = 0, mc_theta = 0, mc_phi = 0;
39 Float_t rec_mom = 0, rec_theta = 0, rec_phi = 0;
40 for (Int_t mc = 0; mc < mc_array->GetEntriesFast(); mc++)
45 mc_theta = mctrack->
GetMomentum().Theta()*TMath::RadToDeg();
46 mc_phi = mctrack->
GetMomentum().Phi()*TMath::RadToDeg();
49 for (Int_t pp=0; pp<cand_array->GetEntriesFast(); pp++)
53 if ( (cand_mult==0) || ((cand_mult>0) && (
fabs(rec_mom-mc_mom)>
fabs(pidCand->
GetMomentum().Mag()-mc_mom))) )
63 Float_t ntuple[] = {j,mc_mom,mc_theta,mc_phi, mc_pid,
64 rec_mom, rec_theta*TMath::RadToDeg(), rec_phi*TMath::RadToDeg(), cand_mult};
int track_check(Int_t nEntries=0)
TVector3 GetMomentum() const
friend F32vec4 fabs(const F32vec4 &a)
Int_t GetMotherID() const
TVector3 GetMomentum() const