]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/MUONCheck.C
Right svmap and tranform files for version 2 of geometry builder st2 ( Christian )
[u/mrichter/AliRoot.git] / MUON / MUONCheck.C
index db1f1963f91fea3eff7c56bf713255a68789b87b..1e880323b1e69fb6d499f1895254d6638fa5b508 100644 (file)
@@ -19,7 +19,7 @@
 // Macro for checking aliroot output and associated files contents
 // Gines Martinez, Subatech June 2003
 //
-
+#if !defined(__CINT__) || defined(__MAKECINT__)
 // ROOT includes
 #include "TBranch.h"
 #include "TClonesArray.h"
 #include "AliMUONRawCluster.h"
 #include "AliMUONGlobalTrigger.h"
 #include "AliMUONLocalTrigger.h"
+#include "AliMUONTrack.h"
+#endif
+
 
-void MUONkine(char * filename="galice.root")
+void MUONkine(char * filename="galice.root",Int_t event2Check=0)
 {
-  TClonesArray * ListOfParticles = new TClonesArray("TParticle",1000);
-  TParticle * particle = new TParticle();
+  // Stack of particle for each event
+  AliStack* stack;
   // Creating Run Loader and openning file containing Hits
   AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
   if (RunLoader ==0x0) {
     printf(">>> Error : Error Opening %s file \n",filename);
     return;
   }
+
   RunLoader->LoadKinematics("READ");
   Int_t ievent, nevents;
   nevents = RunLoader->GetNumberOfEvents();
 
   for(ievent=0; ievent<nevents; ievent++) {  // Event loop
+    if (event2Check!=0) ievent=event2Check;
     Int_t iparticle, nparticles;
     // Getting event ievent
     RunLoader->GetEvent(ievent); 
-    RunLoader->TreeK()->GetBranch("Particles")->SetAddress(&particle);
-    nparticles = RunLoader->TreeK()->GetEntries();
+    stack = RunLoader->Stack();
+    nparticles = (Int_t) stack->GetNtrack();
     printf(">>> Event %d, Number of particles is %d \n",ievent, nparticles);
     for(iparticle=0; iparticle<nparticles; iparticle++) {
-      RunLoader->TreeK()->GetEvent(iparticle);
-      particle->Print("");
+      stack->Particle(iparticle)->Print("");  
     }
+    if (event2Check!=0) ievent=nevents;
   }
   RunLoader->UnloadKinematics();
 }
 
 
-void MUONhits(char * filename="galice.root")
+void MUONhits(char * filename="galice.root", Int_t event2Check=0)
 {
   // Creating Run Loader and openning file containing Hits
   AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
@@ -91,6 +96,7 @@ void MUONhits(char * filename="galice.root")
   nevents = RunLoader->GetNumberOfEvents();
 
   for(ievent=0; ievent<nevents; ievent++) {  // Event loop
+    if (event2Check!=0) ievent=event2Check;
     printf(">>> Event %d \n",ievent);
     // Getting event ievent
     RunLoader->GetEvent(ievent); 
@@ -110,6 +116,7 @@ void MUONhits(char * filename="galice.root")
       for(ihit=0; ihit<nhits; ihit++) {
        mHit = static_cast<AliMUONHit*>(muondata.Hits()->At(ihit));
        Int_t Nch      = mHit->Chamber();  // chamber number
+       Int_t detele   = mHit-> DetElemId(); // Detection element if defined
        Int_t hittrack = mHit->Track();
        Float_t x      = mHit->X();
        Float_t y      = mHit->Y();
@@ -118,17 +125,18 @@ void MUONhits(char * filename="galice.root")
        Float_t theta  = mHit->Theta();
        Float_t phi    = mHit->Phi();
        Float_t momentum = mHit->Momentum();
-       printf(">>> Hit %2d Chamber %2d Track %4d x %6.3f y %6.3f z %7.3f elos %g theta %6.3f phi %5.3f momentum %5.3f\n",
-              ihit, Nch,hittrack,x,y,z,elos,theta,phi, momentum);
+       printf(">>> Hit %2d Chamber %2d DetEle %4d Track %4d x %6.3f y %6.3f z %7.3f elos %g  momentum %5.3f\n",
+              ihit, Nch, detele, hittrack,x,y,z,elos,momentum);
       }
       muondata.ResetHits();
     } // end track loop
+    if (event2Check!=0) ievent=nevents;
   }  // end event loop
   MUONLoader->UnloadHits();
 }
 
 
-void MUONdigits(char * filename="galice.root")
+void MUONdigits(char * filename="galice.root", Int_t event2Check=0)
 {
   // Creating Run Loader and openning file containing Hits
   AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
@@ -147,6 +155,7 @@ void MUONdigits(char * filename="galice.root")
   AliMUONDigit * mDigit;
   
   for(ievent=0; ievent<nevents; ievent++) {
+    if (event2Check!=0) ievent=event2Check;
     printf(">>> Event %d \n",ievent);
     RunLoader->GetEvent(ievent);
   
@@ -154,7 +163,7 @@ void MUONdigits(char * filename="galice.root")
     Int_t ichamber, nchambers;
     nchambers = AliMUONConstants::NCh(); ;
     muondata.SetTreeAddress("D"); 
-    char branchname[30];    
+    //    char branchname[30];    
  
     Int_t icathode, ncathodes;
     ncathodes=2;
@@ -164,7 +173,7 @@ void MUONdigits(char * filename="galice.root")
       muondata.GetCathode(icathode);
       // Loop on chambers
       for( ichamber=0; ichamber<nchambers; ichamber++) {
-       printf(">>> Chamber %d\n",ichamber);
+       printf(">>> Chamber %d\n",ichamber+1);
        
        Int_t idigit, ndigits;
        ndigits = (Int_t) muondata.Digits(ichamber)->GetEntriesFast();
@@ -183,19 +192,21 @@ void MUONdigits(char * filename="galice.root")
          Int_t TCharges0 = mDigit->TrackCharge(0);  //charge per track making this digit (up to 10)
          Int_t TCharges1 = mDigit->TrackCharge(1);
          Int_t TCharges2 = mDigit->TrackCharge(2);
-         
-         printf(">>> Digit %4d cathode %1d hit %4d PadX %3d PadY %3d Signal %4d Physics %4d Track0 %4d TrackCharge0 %4d Track1 %'d 
-         TrackCharge1 %4d Track2 %4d TrackCharge2 %4d \n",idigit, Cathode,Hit, PadX, PadY, Signal, Physics, 
-         Track0, TCharges0, Track1, TCharges1, Track2, TCharges2);
+         Int_t idDE = mDigit->DetElemId();
+                 
+         printf(">>>IdDE %d Digit %4d cathode %1d hit %4d PadX %3d PadY %3d Signal %4d Physics %4d Track0 %4d TrackCharge0 %4d Track1 %4d TrackCharge1 %4d Track2 %4d TrackCharge2 %4d \n",
+                idDE, idigit, Cathode,Hit, PadX, PadY, Signal, Physics, Track0, 
+                TCharges0, Track1, TCharges1, Track2, TCharges2);
        } // end digit loop
       } // end chamber loop
       muondata.ResetDigits();
     } // end cathode loop
+    if (event2Check!=0) ievent=nevents;
   }  // end event loop
   MUONLoader->UnloadDigits();
 }
 
-void MUONrecpoints(char * filename="galice.root") {
+void MUONrecpoints(char * filename="galice.root", Int_t event2Check=0) {
 
   // Creating Run Loader and openning file containing Hits
   AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
@@ -211,9 +222,10 @@ void MUONrecpoints(char * filename="galice.root") {
 
   Int_t ievent, nevents;
   nevents = RunLoader->GetNumberOfEvents();
-  AliMUONRawCluster * mRecPoint;
+  AliMUONRawCluster * mRecPoint = 0;
   
   for(ievent=0; ievent<nevents; ievent++) {
+    if (event2Check!=0) ievent=event2Check;
     printf(">>> Event %d \n",ievent);
     RunLoader->GetEvent(ievent);
     // Addressing
@@ -227,10 +239,9 @@ void MUONrecpoints(char * filename="galice.root") {
       printf(">>> Chamber %d\n",ichamber);
       sprintf(branchname,"MUONRawClusters%d",ichamber+1);
       //printf(">>>  branchname %s\n",branchname);
-  
       Int_t irecpoint, nrecpoints;
       nrecpoints = (Int_t) muondata.RawClusters(ichamber)->GetEntriesFast();
-      
+      printf("number of recpoints = %6d \n",nrecpoints);
       for(irecpoint=0; irecpoint<nrecpoints; irecpoint++) {
        mRecPoint = static_cast<AliMUONRawCluster*>(muondata.RawClusters(ichamber)->At(irecpoint));
 //     Int_t       fTracks[3];        //labels of overlapped tracks
@@ -253,30 +264,33 @@ void MUONrecpoints(char * filename="galice.root") {
 //                                    //   charge chi2 compatibility
 //                                    // 2 none give satisfactory chi2
 
-       Int_t Track0 = mRecPoint->fTracks[0];
-       Int_t Track1 = mRecPoint->fTracks[1]; 
-       Int_t Track2 = mRecPoint->fTracks[2];
-       Int_t Q0 = mRecPoint->fQ[0];
-       Int_t Q1 = mRecPoint->fQ[1];
-       Float_t x0 = mRecPoint->fX[0];
-       Float_t x1 = mRecPoint->fX[1];
-       Float_t y0 = mRecPoint->fY[0];
-       Float_t y1 = mRecPoint->fY[1];
-       Float_t z0 = mRecPoint->fZ[0];
-       Float_t z1 = mRecPoint->fZ[1];
-       Float_t chi2_0 =  mRecPoint->fChi2[0];
-       Float_t chi2_1 =  mRecPoint->fChi2[1];
-
-       printf(">>> RecPoint %4d x %6.3f %6.3f y %6.3f %6.3f z %6.3f %6.3f Q0 %4d  Q1 %4d Hit %4d Track1 %4d Track2 %4d Chi2 %6.3f %6.3f \n",
-irecpoint, x0, x1, y0, y1, z0, z1, Q0, Q1, Track0, Track1, Track2, chi2_0, chi2_1);
+       Int_t Track0 = mRecPoint->GetTrack(0);
+       Int_t Track1 = mRecPoint->GetTrack(1); 
+       Int_t Track2 = mRecPoint->GetTrack(2);
+       Int_t Q0 = mRecPoint->GetCharge(0);
+       Int_t Q1 = mRecPoint->GetCharge(1);
+       Float_t x0 = mRecPoint->GetX(0);
+       Float_t x1 = mRecPoint->GetX(1);
+       Float_t y0 = mRecPoint->GetY(0);
+       Float_t y1 = mRecPoint->GetY(1);
+       Float_t z0 = mRecPoint->GetZ(0);
+       Float_t z1 = mRecPoint->GetZ(1);
+       Float_t chi2_0 =  mRecPoint->GetChi2(0);
+       Float_t chi2_1 =  mRecPoint->GetChi2(1);
+       Int_t de = mRecPoint->GetDetElementID();
+       //      printf(">>> RecPoint %4d x %6.3f %6.3f y %6.3f %6.3f z %6.3f %6.3f Q0 %4d  Q1 %4d Hit %4d Track1 %4d Track2 %4d Chi2 %6.3f %6.3f \n",
+       //irecpoint, x0, x1, y0, y1, z0, z1, Q0, Q1, Track0, Track1, Track2, chi2_0, chi2_1);
+       cout << mRecPoint->GetDetElemId() << endl;
+       printf(">>> RecPoint %4d x %6.3f y %6.3f z %6.3f DetElem %2d \n",irecpoint,x0,y0,z0,de);
       } // end recpoint loop
     } // end chamber loop
     muondata.ResetRawClusters();
+    if (event2Check!=0) ievent=nevents;
   }  // end event loop
   MUONLoader->UnloadRecPoints();
 }
 
-void MUONTestTrigger (char * filename="galice.root"){
+void MUONTestTrigger (char * filename="galice.root", Int_t event2Check=0){
 // reads and dumps trigger objects from MUON.RecPoints.root
   TClonesArray * globalTrigger;
   TClonesArray * localTrigger;
@@ -289,7 +303,7 @@ void MUONTestTrigger (char * filename="galice.root"){
   }
   
   AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader");
-  MUONLoader->LoadRecPoints("READ");
+  MUONLoader->LoadDigits("READ");
   // Creating MUON data container
   AliMUONData muondata(MUONLoader,"MUON","MUON");
   
@@ -301,10 +315,11 @@ void MUONTestTrigger (char * filename="galice.root"){
   AliMUONLocalTrigger *locTrg;
   
   for (ievent=0; ievent<nevents; ievent++) {
+    if (event2Check!=0) ievent=event2Check;
     RunLoader->GetEvent(ievent);
     
     muondata.SetTreeAddress("GLT"); 
-    muondata.GetTrigger();
+    muondata.GetTriggerD();
     
     globalTrigger = muondata.GlobalTrigger();
     localTrigger = muondata.LocalTrigger();
@@ -362,12 +377,58 @@ void MUONTestTrigger (char * filename="galice.root"){
       
     } // end of loop on Local Trigger
     muondata.ResetTrigger();
+    if (event2Check!=0) ievent=nevents;
   } // end loop on event  
   MUONLoader->UnloadRecPoints();
 }
 
 
 
+void MUONRecTracks (char * filename="galice.root", Int_t event2Check=0 ){
+// reads and dumps trigger objects from MUON.RecPoints.root
+  TClonesArray * RecTracks;
+  
+  // Creating Run Loader and openning file containing Hits
+  AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
+  if (RunLoader ==0x0) {
+    printf(">>> Error : Error Opening %s file \n",filename);
+    return;
+  }
+  
+  AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader");
+  MUONLoader->LoadTracks("READ");
+  // Creating MUON data container
+  AliMUONData muondata(MUONLoader,"MUON","MUON");
+  
+    Int_t ievent, nevents;
+  nevents = RunLoader->GetNumberOfEvents();
+  
+  //  AliMUONTrack * rectrack;
+  
+  for (ievent=0; ievent<nevents; ievent++) {
+    if (event2Check!=0) ievent=event2Check;
+    RunLoader->GetEvent(ievent);
+    
+    muondata.SetTreeAddress("RT");
+    muondata.GetRecTracks();
+    RecTracks = muondata.RecTracks();
+    
+    
+    Int_t nrectracks = (Int_t) RecTracks->GetEntriesFast(); //
+
+    printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks);
+   
+    muondata.ResetRecTracks();
+    if (event2Check!=0) ievent=nevents;
+  } // end loop on event  
+  MUONLoader->UnloadTracks();
+}
+
+
+
+
+
+