]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/CreateAODfromESD.C
Some more classes moved from libSTEER to libSTEERBase.
[u/mrichter/AliRoot.git] / STEER / CreateAODfromESD.C
index 25a62feec1ec83e17fd74875efb1cab31f9fb3ab..26c5fa933878f43a81c12cf8deffd5e00eba3ba6 100644 (file)
@@ -10,8 +10,9 @@
 #include "AliAODVertex.h"
 #include "AliAODTrack.h"
 #include "AliAODCluster.h"
+#include "AliAODTracklets.h"
 
-#include "AliESD.h"
+#include "AliESDEvent.h"
 #include "AliESDtrack.h"
 #include "AliESDMuonTrack.h"
 #include "AliESDVertex.h"
@@ -32,17 +33,16 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
   TFile *outFile = TFile::Open(outFileName, "RECREATE");
 
   // create the tree
-  TTree *aodTree = new TTree("AOD", "AliAOD tree");
+  TTree *aodTree = new TTree("aodTree", "AliAOD tree");
   aodTree->Branch(aod->GetList());
 
   // connect to ESD
   TFile *inFile = TFile::Open(inFileName, "READ");
   TTree *t = (TTree*) inFile->Get("esdTree");
-  TBranch *b = t->GetBranch("ESD");
-  AliESD *esd = 0;
-  b->SetAddress(&esd);
+  AliESDEvent *esd = new AliESDEvent();
+  esd->ReadFromTree(t);
 
-  Int_t nEvents = b->GetEntries();
+  Int_t nEvents = t->GetEntries();
 
   // set arrays and pointers
   Float_t posF[3];
@@ -54,13 +54,13 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
 
   // loop over events and fill them
   for (Int_t iEvent = 0; iEvent < nEvents; ++iEvent) {
-    b->GetEntry(iEvent);
+    t->GetEntry(iEvent);
 
     // Multiplicity information needed by the header (to be revised!)
     Int_t nTracks   = esd->GetNumberOfTracks();
     Int_t nPosTracks = 0;
     for (Int_t iTrack=0; iTrack<nTracks; ++iTrack) 
-      if (esd->GetTrack(iTrack)->GetSign()> 0) nPosTracks++;
+      if (esd->GetTrack(iTrack)->Charge()> 0) nPosTracks++;
     
     // Access to the header
     AliAODHeader *header = aod->GetHeader();
@@ -225,7 +225,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                           pos,
                                           kFALSE,
                                           covTr, 
-                                          (Short_t)esdTrack->GetSign(),
+                                          (Short_t)esdTrack->Charge(),
                                           esdTrack->GetITSClusterMap(), 
                                           pid,
                                           vV0FromCascade,
@@ -260,7 +260,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                           pos,
                                           kFALSE,
                                           covTr, 
-                                          (Short_t)esdTrack->GetSign(),
+                                          (Short_t)esdTrack->Charge(),
                                           esdTrack->GetITSClusterMap(), 
                                           pid,
                                           vV0FromCascade,
@@ -297,7 +297,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                           pos,
                                           kFALSE,
                                           covTr, 
-                                          (Short_t)esdTrack->GetSign(),
+                                          (Short_t)esdTrack->Charge(),
                                           esdTrack->GetITSClusterMap(), 
                                           pid,
                                           vcascade,
@@ -358,7 +358,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                           pos,
                                           kFALSE,
                                           covTr, 
-                                          (Short_t)esdTrack->GetSign(),
+                                          (Short_t)esdTrack->Charge(),
                                           esdTrack->GetITSClusterMap(), 
                                           pid,
                                           vV0,
@@ -393,7 +393,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                           pos,
                                           kFALSE,
                                           covTr, 
-                                          (Short_t)esdTrack->GetSign(),
+                                          (Short_t)esdTrack->Charge(),
                                           esdTrack->GetITSClusterMap(), 
                                           pid,
                                           vV0,
@@ -479,7 +479,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                           pos,
                                           kFALSE,
                                           covTr, 
-                                          (Short_t)esdTrack->GetSign(),
+                                          (Short_t)esdTrack->Charge(),
                                           esdTrack->GetITSClusterMap(), 
                                           pid,
                                           primary,
@@ -525,7 +525,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                           pos,
                                           kFALSE,
                                           covTr, 
-                                          (Short_t)esdTrack->GetSign(),
+                                          (Short_t)esdTrack->Charge(),
                                           esdTrack->GetITSClusterMap(), 
                                           pid,
                                           vkink,
@@ -577,7 +577,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                         pos,
                                         kFALSE,
                                         covTr, 
-                                        (Short_t)esdTrack->GetSign(),
+                                        (Short_t)esdTrack->Charge(),
                                         esdTrack->GetITSClusterMap(), 
                                         pid,
                                         primary,
@@ -597,7 +597,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                         pos,
                                         kFALSE,
                                         covTr, 
-                                        (Short_t)esdTrack->GetSign(),
+                                        (Short_t)esdTrack->Charge(),
                                         esdTrack->GetITSClusterMap(), 
                                         pid,
                                         NULL,
@@ -623,7 +623,7 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
       // has to be changed once the muon pid is provided by the ESD
       for (Int_t i = 0; i < 10; pid[i++] = 0.); pid[AliAODTrack::kMuon]=1.;
       
-      primary->AddDaughter(
+      primary->AddDaughter( aodTrack =
          new(tracks[jTracks++]) AliAODTrack(0, // no ID provided
                                             0, // no label provided
                                             p,
@@ -631,14 +631,21 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
                                             pos,
                                             kFALSE,
                                             NULL, // no covariance matrix provided
-                                            (Short_t)-99, // no charge provided
-                                            0, // no ITSClusterMap
+                                            esdMuTrack->Charge(),
+                                            0, // ITSClusterMap is set below
                                             pid,
                                             primary,
-                                            kTRUE,  // check if this is right
-                                            kTRUE,  // not used for vertex fit
+                                            kFALSE,  // muon tracks are not used to fit the primary vtx
+                                            kFALSE,  // not used for vertex fit
                                             AliAODTrack::kPrimary)
          );
+       aodTrack->SetHitsPatternInTrigCh(esdMuTrack->GetHitsPatternInTrigCh());
+       Int_t track2Trigger = esdMuTrack->GetMatchTrigger();
+       aodTrack->SetMatchTrigger(track2Trigger);
+       if (track2Trigger) 
+         aodTrack->SetChi2MatchTrigger(esdMuTrack->GetChi2MatchTrigger());
+       else 
+         aodTrack->SetChi2MatchTrigger(0.);
     }
     
     // Access to the AOD container of clusters
@@ -654,8 +661,8 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
 
       Int_t id = cluster->GetID();
       Int_t label = -1;
-      Float_t energy = cluster->GetClusterEnergy();
-      cluster->GetGlobalPosition(posF);
+      Float_t energy = cluster->E();
+      cluster->GetPosition(posF);
       AliAODVertex *prodVertex = primary;
       AliAODTrack *primTrack = NULL;
       Char_t ttype=AliAODCluster::kUndef;
@@ -682,6 +689,20 @@ void CreateAODfromESD(const char *inFileName = "AliESDs.root",
 
     } // end of loop on calo clusters
 
+    // tracklets
+    const AliMultiplicity *mult = esd->GetMultiplicity();
+    if (mult) {
+      if (mult->GetNumberOfTracklets()>0) {
+       aod->GetTracklets()->CreateContainer(mult->GetNumberOfTracklets());
+
+       for (Int_t n=0; n<mult->GetNumberOfTracklets(); n++) {
+         aod->GetTracklets()->SetTracklet(n, mult->GetTheta(n), mult->GetPhi(n), mult->GetDeltaPhi(n), mult->GetLabel(n));
+       }
+      }
+    } else {
+      Printf("ERROR: AliMultiplicity could not be retrieved from ESD");
+    }
+
     delete [] usedTrack;
     delete [] usedV0;
     delete [] usedKink;