Using common container, as argument, for all classes (Christian)
authormartinez <martinez@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 13 Jan 2006 10:03:45 +0000 (10:03 +0000)
committermartinez <martinez@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 13 Jan 2006 10:03:45 +0000 (10:03 +0000)
MUON/AliMUON.cxx
MUON/AliMUONClusterReconstructor.cxx
MUON/AliMUONEventRecoCombi.cxx
MUON/AliMUONRawData.cxx
MUON/AliMUONReconstructor.cxx
MUON/AliMUONTrackReconstructor.cxx

index e68d6cc..12c5d4f 100644 (file)
@@ -429,7 +429,7 @@ void AliMUON::Digits2Raw()
   // convert digits of the current event to raw data
   AliMUONRawData* rawData;
 
-  rawData = new AliMUONRawData(fLoader);
+  rawData = new AliMUONRawData(fLoader,fMUONData);
   if (!rawData->Digits2Raw()) AliInfo("pb writting raw data");
   delete rawData;
   return;
index 09005e0..c659f67 100644 (file)
@@ -48,10 +48,7 @@ ClassImp(AliMUONClusterReconstructor) // Class implementation in ROOT context
   fLoader = loader;
 
   // initialize container
-  if (data == 0x0)
-    fMUONData = new AliMUONData(fLoader,"MUON","MUON");
-  else
-    fMUONData = data;
+  fMUONData = data;
   
   // reconstruction model
   fRecModel = new AliMUONClusterFinderVS();
@@ -95,8 +92,6 @@ AliMUONClusterReconstructor::operator=(const AliMUONClusterReconstructor& rhs)
 AliMUONClusterReconstructor::~AliMUONClusterReconstructor(void)
 {
 
-  if (fMUONData)
-    delete fMUONData;
   if (fRecModel)
     delete fRecModel;
 
@@ -121,19 +116,14 @@ void AliMUONClusterReconstructor::Digits2Clusters(Int_t chBeg)
     TClonesArray* muonDigits;
     Int_t n2;
     Int_t n1;
-  
-    fMUONData->ResetDigits(); //AZ
-    fMUONData->GetDigits(); //AZ
 
     for (Int_t ich = chBeg; ich < AliMUONConstants::NTrackingCh(); ich++) {
  
       id.Reset();
       n1 = 0;
       n2 = 0;
-      //cathode 0 & 1
-      //fMUONData->ResetDigits();
-      //fMUONData->GetDigits();
 
+      //cathode 0 & 1
       muonDigits = fMUONData->Digits(ich); 
       ndig = muonDigits->GetEntriesFast();
       TClonesArray &lDigit = *digAll;
index 553d6c5..f7dab52 100644 (file)
@@ -69,7 +69,7 @@ AliMUONEventRecoCombi::~AliMUONEventRecoCombi()
 }
 
 //_________________________________________________________________________
-void AliMUONEventRecoCombi::FillEvent(AliMUONData *dataCluster, AliMUONData *dataEvent, AliMUONClusterFinderAZ *recModel)
+void AliMUONEventRecoCombi::FillEvent(AliMUONData *data, AliMUONClusterFinderAZ *recModel)
 {
   // Fill event information
 
@@ -82,7 +82,7 @@ void AliMUONEventRecoCombi::FillEvent(AliMUONData *dataCluster, AliMUONData *dat
   Int_t nDetElem = 0;
   for (Int_t ich = 0; ich < 6; ich++) {
     // loop over chambers 0-5
-    TClonesArray *digs = dataCluster->Digits(ich);
+    TClonesArray *digs = data->Digits(ich);
     //cout << ich << " " << digs << " " << digs->GetEntriesFast() << endl;
     Int_t idDE = -1;
     for (Int_t i = 0; i < digs->GetEntriesFast(); i++) {
@@ -107,7 +107,7 @@ void AliMUONEventRecoCombi::FillEvent(AliMUONData *dataCluster, AliMUONData *dat
   TArrayS *nPerZ = new TArrayS(20);
   for (Int_t i = 0; i < nDetElem; i++) {
     AliMUONDetElement *detElem = (AliMUONDetElement*) fDetElems->UncheckedAt(i);
-    detElem->Fill(dataCluster);
+    detElem->Fill(data);
     //cout << i << " " << detElem->Z() << endl;
     if (detElem->Z() - z0 < 0.5) { 
       // the same Z
@@ -124,7 +124,7 @@ void AliMUONEventRecoCombi::FillEvent(AliMUONData *dataCluster, AliMUONData *dat
   /*
   cout << fNZ << endl;
   for (Int_t i = 0; i < 7; i++) {
-    cout << i << " " << dataCluster->RawClusters(i)->GetEntriesFast() << endl;
+    cout << i << " " << data->RawClusters(i)->GetEntriesFast() << endl;
   }
   */
 
@@ -142,18 +142,18 @@ void AliMUONEventRecoCombi::FillEvent(AliMUONData *dataCluster, AliMUONData *dat
   delete nPerZ;
 
   // Fill rec. point container for stations 4 and 5
-  //cout << dataEvent->TreeR() << endl;
-  //dataEvent->MakeBranch("RC");
-  dataEvent->SetTreeAddress("RCC");
+  //cout << data->TreeR() << endl;
+  //data->MakeBranch("RC");
+  data->SetTreeAddress("RCC");
   for (Int_t ch = 6; ch < 10; ch++) {
-    TClonesArray *raw = dataCluster->RawClusters(ch);
-    //cout << raw->GetEntriesFast() << " " << dataEvent->RawClusters(ch) << endl;
+    TClonesArray *raw = data->RawClusters(ch);
+    //cout << raw->GetEntriesFast() << " " << data->RawClusters(ch) << endl;
     for (Int_t i = 0; i < raw->GetEntriesFast(); i++) {
       AliMUONRawCluster *clus = (AliMUONRawCluster*) raw->UncheckedAt(i);
-      dataEvent->AddRawCluster(ch, *clus);
+      data->AddRawCluster(ch, *clus);
     }
   }
-  //dataCluster->SetTreeAddress("RC");
+  //data->SetTreeAddress("RC");
 }
 
 //_________________________________________________________________________
index 596adb0..c568ba4 100644 (file)
@@ -71,7 +71,7 @@
 
 ClassImp(AliMUONRawData) // Class implementation in ROOT context
 //__________________________________________________________________________
-AliMUONRawData::AliMUONRawData(AliLoader* loader)
+AliMUONRawData::AliMUONRawData(AliLoader* loader,  AliMUONData* data)
   : TObject()
 {
   // Standard Constructor
@@ -83,7 +83,8 @@ AliMUONRawData::AliMUONRawData(AliLoader* loader)
   fSegFactory = new AliMpSegFactory();
 
   // initialize container
-  fMUONData  = new AliMUONData(fLoader,"MUON","MUON");
+//   fMUONData  = new AliMUONData(fLoader,"MUON","MUON");
+  fMUONData  = data;
 
   // initialize array
   fSubEventArray = new TClonesArray("AliMUONSubEventTracker",1000);
@@ -140,8 +141,7 @@ AliMUONRawData::~AliMUONRawData(void)
   if (fSegFactory) fSegFactory->Clear();
   delete fSegFactory;  
 
-  if (fMUONData)
-    delete fMUONData;
   if (fSubEventArray)
     fSubEventArray->Delete(); //using delete cos allocating memory in copy ctor.
 
index e35fd3c..0f8aa8c 100644 (file)
@@ -60,17 +60,22 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader) const
   AliLoader* loader = runLoader->GetLoader("MUONLoader");
   Int_t nEvents = runLoader->GetNumberOfEvents();
 
-// used local container for each method
-// passing fLoader as argument, could be avoided ???
-  AliMUONTrackReconstructor* recoEvent = new AliMUONTrackReconstructor(loader);
-  AliMUONData* dataEvent = recoEvent->GetMUONData();
-  if (strstr(GetOption(),"Original")) recoEvent->SetTrackMethod(1); // Original tracking
-  else if (strstr(GetOption(),"Combi")) recoEvent->SetTrackMethod(3); // Combined cluster / track
-  else recoEvent->SetTrackMethod(2); // Kalman
-
-  AliMUONClusterReconstructor* recoCluster = new AliMUONClusterReconstructor(loader);
-  AliMUONData* dataCluster = recoCluster->GetMUONData();
+  AliMUONData* data = new AliMUONData(loader,"MUON","MUON");
+
+// passing loader as argument.
+  AliMUONTrackReconstructor* recoEvent = new AliMUONTrackReconstructor(loader, data);
+
+  if (strstr(GetOption(),"Original")) 
+    recoEvent->SetTrackMethod(1); // Original tracking
+  else if (strstr(GetOption(),"Combi")) 
+    recoEvent->SetTrackMethod(3); // Combined cluster / track
+  else
+    recoEvent->SetTrackMethod(2); // Kalman
+
+  AliMUONClusterReconstructor* recoCluster = new AliMUONClusterReconstructor(loader, data);
+  
   AliMUONClusterFinderVS *recModel = recoCluster->GetRecoModel();
+
   if (!strstr(GetOption(),"VS")) {
     recModel = (AliMUONClusterFinderVS*) new AliMUONClusterFinderAZ();
     recoCluster->SetRecoModel(recModel);
@@ -92,29 +97,30 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader) const
      
     // tracking branch
     if (recoEvent->GetTrackMethod() != 3) {
-      dataCluster->MakeBranch("RC");
-      dataCluster->SetTreeAddress("D,RC");
+      data->MakeBranch("RC");
+      data->SetTreeAddress("D,RC");
     } else {
-      dataCluster->SetTreeAddress("D");
-      dataCluster->SetTreeAddress("RCC");
+      data->SetTreeAddress("D");
+      data->SetTreeAddress("RCC");
     }
     // Important for avoiding a memory leak when reading digits ( to be investigated more in detail)
     // In any case the reading of GLT is needed for the Trigger2Tigger method below
-    dataCluster->SetTreeAddress("GLT");
+    data->SetTreeAddress("GLT");
 
+    data->GetDigits();
     recoCluster->Digits2Clusters(chBeg); 
     if (recoEvent->GetTrackMethod() == 3) {
       // Combined cluster / track finder
-      AliMUONEventRecoCombi::Instance()->FillEvent(dataCluster, dataEvent, (AliMUONClusterFinderAZ*)recModel);
+      AliMUONEventRecoCombi::Instance()->FillEvent(data, (AliMUONClusterFinderAZ*)recModel);
       ((AliMUONClusterFinderAZ*) recModel)->SetReco(2); 
     }
-    else dataCluster->Fill("RC"); 
+    else data->Fill("RC"); 
 
     // trigger branch
-    dataCluster->MakeBranch("TC");
-    dataCluster->SetTreeAddress("TC");
+    data->MakeBranch("TC");
+    data->SetTreeAddress("TC");
     recoCluster->Trigger2Trigger(); 
-    dataCluster->Fill("TC");
+    data->Fill("TC");
 
     //AZ loader->WriteRecPoints("OVERWRITE");
 
@@ -122,38 +128,38 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader) const
     if (!loader->TreeT()) loader->MakeTracksContainer();
 
     // trigger branch
-    dataEvent->MakeBranch("RL"); //trigger track
-    dataEvent->SetTreeAddress("RL");
+    data->MakeBranch("RL"); //trigger track
+    data->SetTreeAddress("RL");
     recoEvent->EventReconstructTrigger();
-    dataEvent->Fill("RL");
+    data->Fill("RL");
 
     // tracking branch
-    dataEvent->MakeBranch("RT"); //track
-    dataEvent->SetTreeAddress("RT");
+    data->MakeBranch("RT"); //track
+    data->SetTreeAddress("RT");
     recoEvent->EventReconstruct();
-    dataEvent->Fill("RT");
+    data->Fill("RT");
 
     loader->WriteTracks("OVERWRITE"); 
   
     if (recoEvent->GetTrackMethod() == 3) { 
       // Combined cluster / track
       ((AliMUONClusterFinderAZ*) recModel)->SetReco(1);
-      dataCluster->MakeBranch("RC");
-      dataCluster->SetTreeAddress("RC");
-      AliMUONEventRecoCombi::Instance()->FillRecP(dataCluster, recoEvent); 
-      dataCluster->Fill("RC"); 
+      data->MakeBranch("RC");
+      data->SetTreeAddress("RC");
+      AliMUONEventRecoCombi::Instance()->FillRecP(data, recoEvent); 
+      data->Fill("RC"); 
     }
     loader->WriteRecPoints("OVERWRITE"); 
 
     //--------------------------- Resetting branches -----------------------
-    dataCluster->ResetDigits();
-    dataCluster->ResetRawClusters();
-    dataCluster->ResetTrigger();
+    data->ResetDigits();
+    data->ResetRawClusters();
+    data->ResetTrigger();
 
-    dataEvent->ResetRawClusters();
-    dataEvent->ResetTrigger();
-    dataEvent->ResetRecTracks();  
-    dataEvent->ResetRecTriggerTracks();
+    data->ResetRawClusters();
+    data->ResetTrigger();
+    data->ResetRecTracks();  
+    data->ResetRecTriggerTracks();
 
   }
   loader->UnloadDigits();
@@ -162,6 +168,7 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader) const
 
   delete recoCluster;
   delete recoEvent;
+  delete data;
 }
 
 //_____________________________________________________________________________
@@ -169,16 +176,14 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader, AliRawReader* ra
 {
 //  AliLoader
   AliLoader* loader = runLoader->GetLoader("MUONLoader");
+  AliMUONData* data = new AliMUONData(loader,"MUON","MUON");
 
-// used local container for each method
-// passing fLoader as argument, could be avoided ???
-  AliMUONTrackReconstructor* recoEvent = new AliMUONTrackReconstructor(loader);
-  AliMUONData* dataEvent = recoEvent->GetMUONData();
+// passing loader as argument.
+  AliMUONTrackReconstructor* recoEvent = new AliMUONTrackReconstructor(loader, data);
 
-  AliMUONRawData* rawData = new AliMUONRawData(loader);
-  AliMUONData* dataCluster = rawData->GetMUONData();
+  AliMUONRawData* rawData = new AliMUONRawData(loader, data);
 
-  AliMUONClusterReconstructor* recoCluster = new AliMUONClusterReconstructor(loader, dataCluster);
+  AliMUONClusterReconstructor* recoCluster = new AliMUONClusterReconstructor(loader, data);
   AliMUONClusterFinderVS *recModel = recoCluster->GetRecoModel();
   recModel->SetGhostChi2Cut(10);
 
@@ -198,16 +203,16 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader, AliRawReader* ra
     if (!loader->TreeD()) loader->MakeDigitsContainer();
 
     // tracking branch
-    dataCluster->MakeBranch("D");
-    dataCluster->SetTreeAddress("D");
+    data->MakeBranch("D");
+    data->SetTreeAddress("D");
     rawData->ReadTrackerDDL(rawReader);
-    dataCluster->Fill("D"); 
+    data->Fill("D"); 
 
     // trigger branch
-    dataCluster->MakeBranch("GLT");
-    dataCluster->SetTreeAddress("GLT");
+    data->MakeBranch("GLT");
+    data->SetTreeAddress("GLT");
     rawData->ReadTriggerDDL(rawReader);
-    dataCluster->Fill("GLT"); 
+    data->Fill("GLT"); 
 
     loader->WriteDigits("OVERWRITE");
 
@@ -215,16 +220,16 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader, AliRawReader* ra
     if (!loader->TreeR()) loader->MakeRecPointsContainer();
      
     // tracking branch
-    dataCluster->MakeBranch("RC");
-    dataCluster->SetTreeAddress("RC");
+    data->MakeBranch("RC");
+    data->SetTreeAddress("RC");
     recoCluster->Digits2Clusters(); 
-    dataCluster->Fill("RC"); 
+    data->Fill("RC"); 
 
     // trigger branch
-    dataCluster->MakeBranch("TC");
-    dataCluster->SetTreeAddress("TC");
+    data->MakeBranch("TC");
+    data->SetTreeAddress("TC");
     recoCluster->Trigger2Trigger(); 
-    dataCluster->Fill("TC");
+    data->Fill("TC");
 
     loader->WriteRecPoints("OVERWRITE");
 
@@ -232,28 +237,28 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader, AliRawReader* ra
     if (!loader->TreeT()) loader->MakeTracksContainer();
 
     // trigger branch
-    dataEvent->MakeBranch("RL"); //trigger track
-    dataEvent->SetTreeAddress("RL");
+    data->MakeBranch("RL"); //trigger track
+    data->SetTreeAddress("RL");
     recoEvent->EventReconstructTrigger();
-    dataEvent->Fill("RL");
+    data->Fill("RL");
 
     // tracking branch
-    dataEvent->MakeBranch("RT"); //track
-    dataEvent->SetTreeAddress("RT");
+    data->MakeBranch("RT"); //track
+    data->SetTreeAddress("RT");
     recoEvent->EventReconstruct();
-    dataEvent->Fill("RT");
+    data->Fill("RT");
 
     loader->WriteTracks("OVERWRITE");  
   
     //--------------------------- Resetting branches -----------------------
-    dataCluster->ResetDigits();
-    dataCluster->ResetRawClusters();
-    dataCluster->ResetTrigger();
-
-    dataEvent->ResetRawClusters();
-    dataEvent->ResetTrigger();
-    dataEvent->ResetRecTracks();
-    dataEvent->ResetRecTriggerTracks();
+    data->ResetDigits();
+    data->ResetRawClusters();
+    data->ResetTrigger();
+
+    data->ResetRawClusters();
+    data->ResetTrigger();
+    data->ResetRecTracks();
+    data->ResetRecTriggerTracks();
   
   }
   loader->UnloadRecPoints();
@@ -262,6 +267,7 @@ void AliMUONReconstructor::Reconstruct(AliRunLoader* runLoader, AliRawReader* ra
 
   delete recoCluster;
   delete recoEvent;
+  delete data;
 }
 
 //_____________________________________________________________________________
index 3c6c932..8d498a0 100644 (file)
@@ -81,8 +81,8 @@ const Double_t AliMUONTrackReconstructor::fgkDefaultEfficiency = 0.95;
 
 ClassImp(AliMUONTrackReconstructor) // Class implementation in ROOT context
 
-  //__________________________________________________________________________
-AliMUONTrackReconstructor::AliMUONTrackReconstructor(AliLoader* loader)
+//__________________________________________________________________________
+AliMUONTrackReconstructor::AliMUONTrackReconstructor(AliLoader* loader, AliMUONData* data)
   : TObject()
 {
   // Constructor for class AliMUONTrackReconstructor
@@ -133,7 +133,8 @@ AliMUONTrackReconstructor::AliMUONTrackReconstructor(AliLoader* loader)
   fLoader = loader;
 
   // initialize container
-  fMUONData  = new AliMUONData(fLoader,"MUON","MUON");
+  // fMUONData  = new AliMUONData(fLoader,"MUON","MUON");
+  fMUONData  = data;
 
   return;
 }