GSI Helmholtzzentrum für Schwerionenforschung
genfit in pandaroot - trunk rev 25180: test macros
Dear Gianluigi et all, I would like to do some tests for comparison in pandaroot, when using genfit (trunk version 25180) and the new vesion of genfit which Johannes and me just introduced in pandaroot. You can find the code here: https://subversion.gsi.de/trac/fairroot/browser/pandaroot/development/ge nfit2/genfit_brach this is a full branch development. The packages which had to change/add/modify to make genfit2 runing smooth in pandaroot are in: https://subversion.gsi.de/trac/fairroot/browser/pandaroot/development/pr encipe/ I tried some bacis test amcros in analysis/rho. They look running without main troubles. Then, I tried to run some macros from /macro/stt/ but I found problems. In particular, two of thiose: /macro/stt/chechgenfit.C /macro/stt/checkdedx_helixhit.C Could you suggest to me what shall I do in order to run those macros, please? these are exactly the tests which I would like to perform. I need to check the resolution/pull of the trackign parameters. Maybe they are not updated to the trunk version rev 25180. Could you provide help, please, and try to update/run those and see what is needed to correct them, in order to make them working? Do you have any suggestion, any standard macro existing which I can use to make standard test, in pandaroot? Thank you very much for your very useful help! cheers Elisabetta
Re: genfit in pandaroot - trunk rev 25180: test macros
Elisabetta Prencipe (2) wrote on Thu, 29 May 2014 15:30 Dear Gianluigi et all, I would like to do some tests for comparison in pandaroot, when using genfit (trunk version 25180) and the new vesion of genfit which Johannes and me just introduced in pandaroot. You can find the code here: https://subversion.gsi.de/trac/fairroot/browser/pandaroot/development/ge nfit2/genfit_brach this is a full branch development. The packages which had to change/add/modify to make genfit2 runing smooth in pandaroot are in: https://subversion.gsi.de/trac/fairroot/browser/pandaroot/development/pr encipe/ I tried some bacis test amcros in analysis/rho. They look running without main troubles. Then, I tried to run some macros from /macro/stt/ but I found problems. In particular, two of thiose: /macro/stt/chechgenfit.C /macro/stt/checkdedx_helixhit.C Could you suggest to me what shall I do in order to run those macros, please? these are exactly the tests which I would like to perform. I need to check the resolution/pull of the trackign parameters. Maybe they are not updated to the trunk version rev 25180. Could you provide help, please, and try to update/run those and see what is needed to correct them, in order to make them working? Do you have any suggestion, any standard macro existing which I can use to make standard test, in pandaroot? Thank you very much for your very useful help! cheers Elisabetta Seher gelibte Elisabetta, first of all, if you want to run tests without the Mvd hits (only the Stt hits), there are two options as far as the Pattern Recognition is concerned: 1- in the simulation phase you use the Mvd system but you declare it passive, so that no Mvd hits are produced. If you do so then you can run all the rest of the pattern recognition + PID etc. normally, without doing anything special. At the end of the PR you will obtain PndTrackCand etc. in the usual way; 2- you have already simulated the Mvd hits (ie you don't want to rerun the simulation) and now you want to analyse the data as if the Mvd hit were not present. This is possible but it requires a small modification in PndTrkTracking2.cxx; actually I could write a method , say, PndTrkTracking2::SetMvdNoAnalysis() that the user could call to "switch off" the Mvd hits. As far as the Macro is concerned, I think that those macro/stt/checkgenfit.C and macro/stt/checkdedx_helixhit.C are obsolete. Which quantities are you interested in checking? Actually right in this period I am running some macros with single muon particles at different angles and momenta to see which is the resolution in angles and momenta when the Mvd system is not used (but present physically). These are the Macros that Susanna and Lia wrote some years ago; I am slightly modifying them for my purposes. If you tell me exactly what you need maybe it you can use those as well. Cheers Gianluigi
Hi Gianluigi! good news! it is not needed for now that I run stt hits without mvd its. So, image that I already simulated and digitized and reconstructed events, for whatever physics channel. All detectors are in. PID is also in. Or maybe I can use Box Generator, and I have one single pion, p=1 GeV/c. Now I am in the situation to check what is the d0, z0, tanLambda....distributions for the tracks which I have reconstructed. I wish to test if the width of the kalman parameter distributions is 1. I guess, you have already written macros which I can use, without I do it myself. I would like to show at the upcoming collaboration meeting differences between genfti1 and genfit2 performancess (momentum resolution for different track momentum, pull distributions, de/dx maybe) So if I can run your macros, it would be awsome. So, we can do tests on the same observables. I agree with you, the macros in stt/ or /mvd in the folder /macro/ , are obsolete. So, which ones can I use? Could you please say to me, without I write something myself, if something exists and where it is and and how I can use it? I would really appreciate, and it would save my time. Thank you again for your kind help and for your macros, Elisabetta
A first check could be just to run the standard reconstruction macro in macro/run, and compare the momentum distribution with genfit1 and with genfit2. This could give a hint on the resolution and efficiency.
Hi Stefano and Gianluigi, the analysis macros available in /macro/run give no troubles. I have access to all information as for my analysis on DsJ( momentum, vertex position, angular distributions; and of course resolution of those). I have a question related to how to get access to the informations like GetZ0(), GetRadius(), GetTanL(), ..., which I see are accessible by mean of PndTrkTrack objects, or PndTrackCand. The question is the following: after I run sim-, digi-, reco-, pid-, I can write in a macro something like this: TClonesArray* cand_array=new TClonesArray("PndPidCandidate"); tree->SetBranchAddress("PidChargeCandidate", &cand_array); [..] for (Int_t pp=0; pp<track_array->GetEntriesFast(); pp++) { PndPidCandidate * mytrack = (PndPidCandidate*)cand_array->At(pp); rec_mom = mctrack->GetMomentum().Mag(); rec_theta = mctrack->GetMomentum().Theta()*TMath::RadToDeg(); rec_phi = mctrack->GetMomentum().Phi()*TMath::RadToDeg(); cand_mult++; // end of candidate loop } ***** This works (thank you Susanna for this macro!). It is available in the macro/pid/track_check.C However, a PndPidCandidate gives access to limited informations, compared to the most generic PndTrkTrack candidates. But if I try: TClonesArray* track_array=new TClonesArray("PndTrkTrack"); tree->SetBranchAddress("Track", &track_array); for (Int_t pp=0; pp<track_array->GetEntriesFast(); pp++) { PndTrackCand * mytrack = (PndTrackCand*)track_array->At(pp); cout<<"Could you eneter in the loop?"<<endl; //rec_d0 = mytrack->GetDist(); rec_z0 = mytrack->GetZ0(); rec_tanL = mytrack->GetTanL(); rec_R = mytrack->GetRadius(); cout<<"test = "<<mytrack->GetZ0()<<endl; rec_charge = -(Int_t) mytrack->GetCharge(); double rec_pt = mytrack->GetRadius()*0.006; double rec_pl = mytrack->GetRadius()*rec_tanL*0.006; rec_mom = TMath::Sqrt(rec_pt*rec_pt + rec_pl*rec_pl); if(rec_mom!=0) rec_omega = rec_charge / rec_mom; // } cand_mult++; } // end of candidate loop ***** I cannot enter neither in the loop. What am I doing wrong here? How should I write this? I attach my macro. Could anyone help, please? Thank you in advance. Elisabetta
Tracks are in the reco file, which you need to add as a friend: tree->AddFriend("cbmsim",inRecoFile);
Thank you Stefano. This helps, but does not answer to my question completely. And my question is: if I wish to test the pull of the tracking distributions, such as Z0(), Dist(), Radius(), TanL(), without recalculating in my analysis macro, which are available and I can get from the class tracking/PndTrkTrack.h, how can I introduce this information in the /macro/reco__complete.C? Clearly, if the info is not in the macro reco_complete.C, I cannot take it and work on that in a modified version of macro/pid/track_check.C. I hope this would explain better my problem. If anybody has any idea or any macro doing this, please I am interested in that. Thank you in advance for your help, and have a nice weekend! cheers, Elisabetta
You have to calculate them by yourself, since we don't use such parametrization. The PndTrack contains the parameters at the first hit, FairTrackPar, and you can have them with the parabolic parametrization P or the helix H. You can check the corresponding classes o the documentation provided in the Turin Computing week.