/[PAMELA software]/PamelaLevel2/doc/examples/example1.C
ViewVC logotype

Diff of /PamelaLevel2/doc/examples/example1.C

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by pam-fi, Mon Oct 9 12:37:52 2006 UTC revision 1.4 by mocchiut, Tue Jan 16 15:26:26 2007 UTC
# Line 2  Line 2 
2  //  Example to integrate all detector info by means of the PamLevel2 class  //  Example to integrate all detector info by means of the PamLevel2 class
3  //  //
4  //  An object of this class has access to all the public members of all the detector classes.  //  An object of this class has access to all the public members of all the detector classes.
5  //  Some local methods allows to sort tracks and solve the tracker y-view ambiguity (reject track images)  //  Some methods allows to sort tracks and solve the tracker y-view ambiguity (reject track images)
6    //
7    //  --- Modified on January 2007 ---
8    //
9    //  In order to access the members of the detector classes you have now to call the
10    //  methods
11    //
12    //  TrkLevel2*   PamLevel2::GetTrkLevel2()
13    //  CaloLevel2*  PamLevel2::GetCaloLevel2()
14    //  OrbitalInfo* PamLevel2::GetOrbitalInfo()
15    //  ecc...
16    //
17    //  For example:
18    //
19    //  PamLevel2*  pam_event  = new PamLevel2();      
20    //  cout << pam_event->GetCaloLevel2()->qtot << endl;
21    //
22    //  The same is for the track. The class PamTrack combines the track-related info from
23    //  tracker, calorimeter and TOF. To access the members of these detector track-related members
24    //  you have to call the methods:
25    //
26    //  TrkTrack*   PamTrack::GetTrkTrack()
27    //  CaloTrkVar* PamTrack::GetCaloTrack()
28    //  ToFTrkVar*  PamTrack::GetToFTrack()
29    //
30    //  For example:
31    //
32    //  PamTrack *track = pam_event->GetTrack(0); //<< retrieve first track, solving the track-image ambiguity
33    //  if(track)cout<< track->GetTrkTrack()->GetRigidity()<<endl;
34  //  //
35  void example1(TString file){  void example1(TString file){
36      //      //
# Line 23  void example1(TString file){ Line 51  void example1(TString file){
51      TFile f(file);      TFile f(file);
52      //      //
53      TTree *T = pam_event->GetPamTree(&f);          // << get Pamela trees from file f      TTree *T = pam_event->GetPamTree(&f);          // << get Pamela trees from file f
54    
55      Int_t nevent = T->GetEntries();      Int_t nevent = T->GetEntries();
56      //      //
57      cout << endl<<" Start loop over events   ";      cout << endl<<" Start loop over events   ";
58      for (Int_t i=0; i<nevent;i++){      for (Int_t i=0; i<nevent;i++){
59            //
60            pam_event->Clear();
61    
62            T->GetEntry(i);
63            //================================================================================
64            // some general quantities
65            //================================================================================
66            // tracker
67            ntrack->Fill( pam_event->GetTrkLevel2()->GetNTracks() );                                                                        //<<
68            // calorimeter
69            qtot->Fill( pam_event->GetCaloLevel2()->qtot );                                                                                         //<<
70            // ToF
71            Int_t npa=0;
72            for(Int_t ipa=0; ipa<6; ipa++)npa = npa + pam_event->GetToFLevel2()->GetNHitPaddles(ipa);       //<<
73            npaddle->Fill(npa);
74            //================================================================================
75            // track related variables
76            //================================================================================
77            for(Int_t it=0; it<pam_event->GetTrkLevel2()->GetNTracks(); it++){     // << loop over the "physical" tracks (no track images)
78                //
79                // << get the it-th physical pamela track
80                // << PamTrack combines the tracker, calorimeter and ToF track-related variables
81                // << (in case of image, choose the best track by means of calorimeter and ToF data)
82                //
83                PamTrack *track = pam_event->GetTrack(it);                                                          //<<
84                //
85                // << if the track fit is good, fill some histos
86                //
87                if( track->GetTrkTrack()->chi2 > 0 && track->GetTrkTrack()->chi2 < 100){
88                    //
89                    // << spatial residuals on the first calorimeter plane for the sorted track
90                    //
91                    Float_t rxs = track->GetCaloTrack()->tbar[0][0] - pam_event->GetCaloLevel2()->cbar[0][0];
92                    Float_t rys = track->GetCaloTrack()->tbar[0][1] - pam_event->GetCaloLevel2()->cbar[0][1];
93                    resxs->Fill(rxs);
94                    resys->Fill(rys);
95                    //
96                    rig->Fill( track->GetTrkTrack()->GetRigidity() );
97                    //
98                    // << spatial residuals on the first calorimeter plane for the image track
99                  //                  //
100                  T->GetEntry(i);                  if(track->GetTrkTrack()->HasImage()){                                // << if the sorted track has an image...
101                  //================================================================================                      //
102                  // some general quantities                      PamTrack *image = pam_event->GetTrackImage(it);   // << ...get the image track
103                  //================================================================================                      //
104                  // tracker                      Float_t rxi = image->GetCaloTrack()->tbar[0][0] - pam_event->GetCaloLevel2()->cbar[0][0];
105                  ntrack->Fill( pam_event->GetNTracks() );                                                                        //<<                      Float_t ryi = image->GetCaloTrack()->tbar[0][1] - pam_event->GetCaloLevel2()->cbar[0][1];
106                  // calorimeter                      resxi->Fill(rxi);
107                  qtot->Fill( pam_event->qtot );                                                                                          //<<                      resyi->Fill(ryi);
108                  // ToF                  };
109                  Int_t npa=0;              };
110                  for(Int_t ipa=0; ipa<6; ipa++)npa = npa + pam_event->GetNHitPaddles(ipa);       //<<          };  // end loop over tracks
111                  npaddle->Fill(npa);          //================================================================================
                 //================================================================================  
                 // track related variables  
                 //================================================================================  
                 for(Int_t it=0; it<pam_event->GetNTracks(); it++){     // << loop over the "physical" tracks (no track images)  
                         //  
                         // << get the it-th physical pamela track  
                         // << PamTrack combines the tracker, calorimeter and ToF track-related variables  
                         // << (in case of image, choose the best track by means of calorimeter and ToF data)  
                         //  
                         PamTrack *track = pam_event->GetTrack(it);                                                              //<<  
                         //  
                         // << if the track fit is good, fill some histos  
                         //  
                         if( track->chi2 > 0 && track->chi2 < 100){  
                         //  
                         // << spatial residuals on the first calorimeter plane for the sorted track  
                         //  
                         Float_t rxs = track->tbar[0][0] - pam_event->cbar[0][0];  
                         Float_t rys = track->tbar[0][1] - pam_event->cbar[0][1];  
                         resxs->Fill(rxs);  
                         resys->Fill(rys);  
                         //  
                         rig->Fill( track->GetRigidity() );  
                         //  
                         // << spatial residuals on the first calorimeter plane for the image track  
                         //  
                         if(track->HasImage()){                                // << if the sorted track has an image...  
                                 //  
                                 PamTrack *image = pam_event->GetTrackImage(it);   // << ...get the image track  
                                 //  
                                 Float_t rxi = image->tbar[0][0] - pam_event->cbar[0][0];  
                                 Float_t ryi = image->tbar[0][1] - pam_event->cbar[0][1];  
                                 resxi->Fill(rxi);  
                                 resyi->Fill(ryi);  
                         };  
                                 };  
                 };  // end loop over tracks  
                         //================================================================================  
112    
113      };                                       // end loop over the events      };                                       // end loop over the events
114      cout << endl << endl << " Done "<< endl<<endl;      cout << endl << endl << " Done "<< endl<<endl;

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.23