]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDMuonTest.C
add a few methods in the v interface
[u/mrichter/AliRoot.git] / STEER / AliESDMuonTest.C
index 93365a96af0b09b18b344a3432c209ce1d745921..3b7b11e2b141015e23ae6c6252a138f2491fd125 100644 (file)
@@ -34,7 +34,7 @@
 #include "AliHeader.h"
 #include "AliLoader.h"
 #include "AliStack.h"
-#include "AliESD.h"
+#include "AliESDEvent.h"
 
 // MUON includes
 #include "AliMUON.h"
@@ -48,8 +48,9 @@
 
 void AliESDMuonTest(char * filename="galice.root", Int_t run=0){
 
-  TClonesArray * recTracksArray;
-  
+  TClonesArray* recTracksArray;
+  TClonesArray* recTrigTracksArray;
+  TTree* treeE;
   // Creating Run Loader and openning file containing Hits
   AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONFolder","READ");
   if (RunLoader ==0x0) {
@@ -61,7 +62,9 @@ void AliESDMuonTest(char * filename="galice.root", Int_t run=0){
   TFile *ef=TFile::Open("AliESD.Muon.root","RECREATE");
   if (!ef->IsOpen()) cerr<<"Can't open AliESD.root file!\n";
 
-  AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader");
+  treeE = new TTree("ESD", "ESD");
+
+  AliLoader* MUONLoader = RunLoader->GetLoader("MUONLoader");
   MUONLoader->LoadTracks("READ");
 
   // Creating MUON data container
@@ -74,109 +77,107 @@ void AliESDMuonTest(char * filename="galice.root", Int_t run=0){
   Int_t nrectracks;
 
   Double_t bendingSlope, nonBendingSlope, fInverseBendingMomentum;
-  Double_t fXRec, fYRec, fZRec;
-
-  Float_t  x11, y11, thetaX,thetaY ;
+  Double_t fXRec, fYRec, fZRec, chi2MatchTrigger;
+  Bool_t matchTrigger;
 
   nevents = RunLoader->GetNumberOfEvents();
-  
+
   // setting pointer for tracks, triggertracks& trackparam at vertex
-  AliMUONTrack * rectrack;
-  AliMUONTriggerTrack * rectriggertrack;
-  AliMUONTrackParam *trackParam;
+  AliMUONTrack* rectrack;
+  AliMUONTriggerTrack* rectriggertrack;
+  AliMUONTrackParamtrackParam;
 
   for (ievent = 0; ievent < nevents; ievent++) {
-    RunLoader->GetEvent(ievent);
 
-    //   cerr<<"\n\nProcessing event number : "<<ievent<<endl;
+    RunLoader->GetEvent(ievent);
 
     // setting ESD class pointer
-    AliESD *event = new AliESD(); 
+    AliESDEvent* event = new AliESDEvent();
+    event->CreateStdContent();
+    char name[255];
+    event->WriteToTree(treeE);
+
     event->SetRunNumber(run);
     event->SetEventNumber(ievent);
 
-    // -------------------- tracks-------------
-
     // setting ESD MUON class
     AliESDMuonTrack* ESDTrack = new  AliESDMuonTrack() ;
+
+ // ---------------- tracks ----------------
     muondata.SetTreeAddress("RT");
     muondata.GetRecTracks();
     recTracksArray = muondata.RecTracks();
-        
-    nrectracks = (Int_t) recTracksArray->GetEntriesFast(); //
-    printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks);
-   
-    // read track infos
-    for (Int_t irectracks = 0; irectracks <  nrectracks;  irectracks++) {
+    nrectracks = (Int_t) recTracksArray->GetEntriesFast();
 
-      rectrack = (AliMUONTrack*) recTracksArray->At(irectracks);
-
-      trackParam = rectrack->GetTrackParamAtVertex();
-
-      bendingSlope            = trackParam->GetBendingSlope();
-      nonBendingSlope         = trackParam->GetNonBendingSlope();
-      fInverseBendingMomentum = trackParam->GetInverseBendingMomentum();
-      fXRec  = trackParam->GetNonBendingCoor();
-      fYRec  = trackParam->GetBendingCoor();
-      fZRec  = trackParam->GetZ();
-
-      ntrackhits = rectrack->GetNTrackHits();
-      fitfmin = rectrack->GetFitFMin();
-
-      // setting data member of ESD MUON
-      ESDTrack->SetInverseBendingMomentum(fInverseBendingMomentum);
-      ESDTrack->SetThetaX(TMath::ATan(nonBendingSlope));
-      ESDTrack->SetThetaY(TMath::ATan(bendingSlope));
-      ESDTrack->SetZ(fZRec);
-      ESDTrack->SetBendingCoor(fYRec);
-      ESDTrack->SetNonBendingCoor(fXRec);
-      ESDTrack->SetChi2(fitfmin);
-      ESDTrack->SetNHit(ntrackhits);
-    }
+// --------------- trigger tracks ----------
+    Long_t trigPat = 0;
 
-    // -------------------- trigger tracks-------------
     muondata.SetTreeAddress("RL");
     muondata.GetRecTriggerTracks();
-    recTracksArray = muondata.RecTriggerTracks();
-        
-    nrectracks = (Int_t) recTracksArray->GetEntriesFast(); //
+    recTrigTracksArray = muondata.RecTriggerTracks();
+    rectriggertrack = (AliMUONTriggerTrack*) recTrigTracksArray->First();
+    trigPat = rectriggertrack->GetGTPattern();
+
     printf(">>> Event %d Number of Recconstructed tracks %d \n",ievent, nrectracks);
-   
-    // read trigger track infos
     for (Int_t irectracks = 0; irectracks <  nrectracks;  irectracks++) {
 
-      rectriggertrack = (AliMUONTriggerTrack*) recTracksArray->At(irectracks);
-    
-      x11 = rectriggertrack->GetY11();
-      y11 = rectriggertrack->GetY11();
-      thetaX = rectriggertrack->GetThetax();
-      thetaY = rectriggertrack->GetThetay();
-
-      // setting data member of ESD MUON trigger
-      ESDTrack->SetThetaX11(thetaX);
-      ESDTrack->SetThetaY11(thetaY);
-      ESDTrack->SetX11(x11);
-      ESDTrack->SetY11(y11);
-    }
+      // ---------------- tracks ----------------
+       rectrack = (AliMUONTrack*) recTracksArray->At(irectracks);    
+       trackParam = rectrack->GetTrackParamAtVertex();
+
+       bendingSlope            = trackParam->GetBendingSlope();
+       nonBendingSlope         = trackParam->GetNonBendingSlope();
+       //      printf(" SlopeX %f SlopeY %f\n",bendingSlope ,nonBendingSlope);
+
+       fInverseBendingMomentum = trackParam->GetInverseBendingMomentum();
+       fXRec  = trackParam->GetNonBendingCoor();
+       fYRec  = trackParam->GetBendingCoor();
+       //      printf(" X %f Y %f\n", fXRec, fYRec);
+
+       fZRec  = trackParam->GetZ();
+       //      printf(" Z %f\n", fZRec);
+
+       ntrackhits = rectrack->GetNTrackHits();
+       fitfmin = rectrack->GetFitFMin();
+       matchTrigger     = rectrack->GetMatchTrigger();
+       chi2MatchTrigger = rectrack->GetChi2MatchTrigger();
+
+       // setting data member of ESD MUON
+       ESDTrack->SetInverseBendingMomentum(fInverseBendingMomentum);
+       ESDTrack->SetThetaX(TMath::ATan(nonBendingSlope));
+       ESDTrack->SetThetaY(TMath::ATan(bendingSlope));
+       ESDTrack->SetZ(fZRec);
+       ESDTrack->SetBendingCoor(fYRec);
+       ESDTrack->SetNonBendingCoor(fXRec);
+       ESDTrack->SetChi2(fitfmin);
+       ESDTrack->SetNHit(ntrackhits);
+       ESDTrack->SetMatchTrigger(matchTrigger);
+       ESDTrack->SetChi2MatchTrigger(chi2MatchTrigger);
+
+      // storing ESD MUON Track into ESD Event & reset muondata
+      event->AddMuonTrack(ESDTrack);
+    }// track loop
+    event->SetTrigger(trigPat);
 
-    // storing ESD MUON Track into ESD Event & reset muondata
-    event->AddMuonTrack(ESDTrack);
+    for (Int_t iTrack = 0; iTrack < event->GetNumberOfMuonTracks(); iTrack++) {
+      AliESDMuonTrack* muonTrack = event->GetMuonTrack(iTrack);
+      Double_t ptInv = TMath::Abs(muonTrack->GetInverseBendingMomentum());
+      cout << "  ptInv: "<<ptInv <<"  nb track: "<< event->GetNumberOfMuonTracks() << endl;
+    }
+    treeE->Fill();
+    event->Reset();
+        
     muondata.ResetRecTracks();
     muondata.ResetRecTriggerTracks();
 
-    // writting ESD event
-    Char_t ename[100]; 
-    sprintf(ename,"%d",ievent);
-    ef->cd();
-    if (!event->Write(ename)) cerr<<"Something bad happened...\n";
-    delete event;
-
-  } // end loop on event  
+  } // end loop on event
+  treeE->GetUserInfo()->Add(event);
+  ef->Write();
   ef->Close();
   MUONLoader->UnloadTracks();
-  MUONLoader->UnloadTriggerTracks();
+  delete event;
 
 }