Bogdan: Updates for the muon display.
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 17 Apr 2007 09:45:53 +0000 (09:45 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 17 Apr 2007 09:45:53 +0000 (09:45 +0000)
EVE/Alieve/MUONChamberData.cxx
EVE/Alieve/MUONChamberData.h
EVE/Alieve/MUONData.cxx
EVE/Alieve/MUONData.h
EVE/Alieve/MUONTrack.cxx

index fac1676..9a84303 100644 (file)
@@ -58,10 +58,10 @@ MUONChamberData::MUONChamberData(Int_t chamber)
   for (Int_t i = 0; i < 7*4096; i++) {
     fDigitBuffer[i] = 0.0;
   }
-  for (Int_t i = 0; i < 5*128; i++) {
+  for (Int_t i = 0; i < 5*256; i++) {
     fClusterBuffer[i] = 0.0;
   }
-  for (Int_t i = 0; i < 3*128; i++) {
+  for (Int_t i = 0; i < 3*256; i++) {
     fHitBuffer[i] = 0.0;
   }
 
@@ -165,8 +165,6 @@ void MUONChamberData::Init(Int_t chamber)
     
     } else {
 
-      //AliMpStationType stationType = AliMpDEManager::GetStationType(detElemId);
-
       if (!fgSegmentation->HasDE(detElemId)) {
        printf("Segmentation has no %d detElemId! \n",detElemId);
        continue;
@@ -220,11 +218,6 @@ void MUONChamberData::Init(Int_t chamber)
 
   }  // end detElemId loop
 
-  //printf("ChamberBox %d \n",chamber);
-  //printf("%f %f \n",fChamberBox[0],fChamberBox[1]);
-  //printf("%f %f \n",fChamberBox[2],fChamberBox[3]);
-  //printf("%f %f \n",fChamberBox[4],fChamberBox[5]);
-
 }
 
 //______________________________________________________________________
@@ -234,6 +227,8 @@ void MUONChamberData::RegisterDigit(Int_t detElemId, Int_t cathode, Int_t ix, In
   // add a digit to this chamber
   //
 
+  if ((fNDigits/7) == (4096-1)) return;
+
   Float_t locP[3], gloP[3], locD[3], gloD[3];
 
   const AliMpVSegmentation* vseg = AliMpSegmentation::Instance()
@@ -257,9 +252,6 @@ void MUONChamberData::RegisterDigit(Int_t detElemId, Int_t cathode, Int_t ix, In
   gloD[1] = locD[1];
   gloD[2] = gloP[2];
 
-  //printf("DigitP %f %f %f \n",gloP[0],gloP[1],gloP[2]);
-  //printf("DigitD %f %f \n",gloD[0],gloD[1]);
-
   if (cathode == 0) gloP[2] += 0.1;
   if (cathode == 1) gloP[2] -= 0.1;
 
@@ -272,11 +264,7 @@ void MUONChamberData::RegisterDigit(Int_t detElemId, Int_t cathode, Int_t ix, In
   fDigitBuffer[fNDigits+6] = cathode;
 
   fNDigits += 7;
-  /*
-  if ((fChamberID < 10 && charge > 5) || fChamberID >= 10) {
-    cout << "dig  " << fChamberID << "  cath  " << cathode << "  z  " << gloP[2] << endl;
-  }
-  */
+
 }
 
 //______________________________________________________________________
@@ -288,6 +276,8 @@ void MUONChamberData::RegisterCluster(Int_t /*detElemId*/, Int_t cathode, Float_
   // identical clusters are registered for both cathode planes ...
   //
 
+  if ((fNClusters/5) == (256-1)) return;
+
   fClusterBuffer[fNClusters  ] = clsX;
   fClusterBuffer[fNClusters+1] = clsY;
   fClusterBuffer[fNClusters+2] = clsZ;
@@ -296,8 +286,6 @@ void MUONChamberData::RegisterCluster(Int_t /*detElemId*/, Int_t cathode, Float_
 
   fNClusters += 5;
 
-  //cout << "cls " << fChamberID << "  cath  " << cathode << "  z  " << clsZ << endl;
-
 }
 
 //______________________________________________________________________
@@ -307,12 +295,12 @@ void MUONChamberData::RegisterHit(Int_t /*detElemId*/, Float_t hitX, Float_t hit
   // add a simulation hit to this chamber
   //
 
+  if ((fNHits/3) == (256-1)) return;
+
   fHitBuffer[fNHits  ] = hitX;
   fHitBuffer[fNHits+1] = hitY;
   fHitBuffer[fNHits+2] = hitZ;
 
-  //cout << "hit " << fChamberID << "  z  " << hitZ << endl;
-
   fNHits += 3;
 
 }
index 9818fde..3872e75 100644 (file)
@@ -30,8 +30,8 @@ protected:
   Int_t   fNClusters;                 // number of found rec points
   Int_t   fNHits;                     // number of simulation hits
   Float_t fDigitBuffer[7*4096];       // digits coordinates, etc.
-  Float_t fClusterBuffer[5*128];      // cluster coordinates, etc.
-  Float_t fHitBuffer[3*128];          // hits coordinates
+  Float_t fClusterBuffer[5*256];      // cluster coordinates, etc.
+  Float_t fHitBuffer[3*256];          // hits coordinates
   Float_t fChamberBox[6];             // chamber envelope box
 
 public:
index 7c88179..e0a2396 100644 (file)
 
 #include <AliLog.h>
 
+#include <AliMUONDigitMaker.h>
 #include <AliMUONHit.h>
 #include <AliMUONRawCluster.h>
 #include <AliMUONDigit.h>
-#include <AliMUONRawStreamTracker.h>
-#include <AliMUONRawStreamTrigger.h>
-#include <AliMUONDDLTracker.h>
-#include <AliMUONBlockHeader.h>
-#include <AliMUONDspHeader.h>
-#include <AliMUONBusStruct.h>
-#include <AliMUONDDLTrigger.h>
-#include <AliMUONDarcHeader.h>
-#include <AliMUONRegHeader.h>
-#include <AliMUONLocalStruct.h>
 #include <AliMUONTriggerCrateStore.h>
-#include <AliMUONTriggerCrate.h>
-#include <AliMUONLocalTriggerBoard.h>
-#include <AliMUONTriggerCircuit.h>
-#include <mapping/AliMpDDLStore.h>
-#include <mapping/AliMpVSegmentation.h>
-#include <mapping/AliMpSegmentation.h>
-#include <mapping/AliMpPad.h>
-#include <mapping/AliMpDEManager.h>
+#include <AliMUONData.h>
 
 #include "TTree.h"
 #include "TString.h"
 #include "TClonesArray.h"
+#include "TList.h"
 
 using namespace Reve;
 using namespace Alieve;
@@ -57,9 +42,6 @@ using namespace Alieve;
 ClassImp(MUONData)
 
 AliRawReader*            MUONData::fgRawReader        = 0;
-AliMUONRawStreamTracker* MUONData::fgRawStreamTracker = 0;
-AliMUONRawStreamTrigger* MUONData::fgRawStreamTrigger = 0;
-AliMpDDLStore*           MUONData::fgBusPatchManager  = 0;
 
 //______________________________________________________________________
 MUONData::MUONData() :
@@ -70,7 +52,7 @@ MUONData::MUONData() :
   // Constructor
   //
   
-  for (Int_t i = 0; i < 100; i++) {
+  for (Int_t i = 0; i < 256; i++) {
     fTrackList[i] = -1;
   }
 
@@ -99,7 +81,7 @@ void MUONData::Reset()
   //DropAllChambers();
 
   fNTrackList = 0;
-  for (Int_t i = 0; i < 100; i++) {
+  for (Int_t i = 0; i < 256; i++) {
     fTrackList[i] = -1;
   }
 
@@ -194,7 +176,7 @@ void MUONData::RegisterTrack(Int_t track)
   // register (in a list) a track with hits in the chambers
   //
 
-  if (fNTrackList >= 100) {
+  if (fNTrackList == (256-1)) {
     cout << "Maximum of registered tracks reached..." << endl;
     return;
   }
@@ -349,408 +331,53 @@ void MUONData::LoadRaw(TString fileName)
     } else if (!fileName.IsNull()) {
       fgRawReader = new AliRawReaderDate(fileName); // DATE file
     }
-    fgRawStreamTracker = new AliMUONRawStreamTracker(fgRawReader);
-    fgRawStreamTrigger = new AliMUONRawStreamTrigger(fgRawReader);
-    fgBusPatchManager = AliMpDDLStore::Instance();
   }
   
-  LoadRawTracker();
-  LoadRawTrigger();
-
-}
-
-//______________________________________________________________________
-void MUONData::LoadRawTracker()
-{
-  //
-  // load raw data for the tracking chambers
-  //
-
   fgRawReader->RewindEvents();
-
-  AliMUONDigit* digit = new AliMUONDigit();
-
-  Int_t maxEvent = 1000;
-  Int_t minDDL = 0, maxDDL = 19;
-  Int_t cathode, detElemId, ix, iy, iChamber;
-
-  AliMUONDDLTracker*       ddlTracker = 0x0;
-  AliMUONBlockHeader*      blkHeader  = 0x0;
-  AliMUONDspHeader*        dspHeader  = 0x0;
-  AliMUONBusStruct*        busStruct  = 0x0;
+  fgRawReader->Reset();
 
   Int_t iEvent = 0;
-  Int_t dataSize, buspatchId;
-  
-  Event* aevent = Alieve::gEvent;
-
   while (fgRawReader->NextEvent()) {
-    
-    if (iEvent != aevent->GetEventId()) {
+    if (iEvent != Alieve::gEvent->GetEventId()) {
       iEvent++;
       continue;
     }
-    
-    if (iEvent == maxEvent)
-      break;
-    
-    // read DDL while < 20 DDL
-    while(fgRawStreamTracker->NextDDL()) {
-      
-      if (fgRawStreamTracker->GetDDL() < minDDL || 
-         fgRawStreamTracker->GetDDL() > maxDDL)
-       continue;
-      
-      //printf("\niDDL %d\n", fgRawStreamTracker->GetDDL());
-      
-      ddlTracker =  fgRawStreamTracker->GetDDLTracker();
-      
-      // loop over block structure
-      Int_t nBlock = ddlTracker->GetBlkHeaderEntries();
-      for(Int_t iBlock = 0; iBlock < nBlock ;iBlock++){
-       
-       blkHeader = ddlTracker->GetBlkHeaderEntry(iBlock);
-       //printf("Block Total length %d\n",blkHeader->GetTotalLength());
-       
-       // loop over DSP structure
-       Int_t nDsp = blkHeader->GetDspHeaderEntries();
-       for(Int_t iDsp = 0; iDsp < nDsp ;iDsp++){   //DSP loop
-         
-         dspHeader =  blkHeader->GetDspHeaderEntry(iDsp);
-         //   printf("Dsp length %d even word %d\n",dspHeader->GetTotalLength(), dspHeader->GetEventWord());
-         
-         // loop over BusPatch structure
-         Int_t nBusPatch = dspHeader->GetBusPatchEntries();
-         for(Int_t iBusPatch = 0; iBusPatch < nBusPatch; iBusPatch++) {  
-           
-           busStruct = dspHeader->GetBusPatchEntry(iBusPatch);
-           
-           //printf("busPatchId %d", busStruct->GetBusPatchId());
-           //printf(" BlockId %d", busStruct->GetBlockId());
-           //printf(" DspId %d\n", busStruct->GetDspId());
-           
-           // loop over data
-           dataSize = busStruct->GetLength();
-           buspatchId = busStruct->GetBusPatchId();
-           for (Int_t iData = 0; iData < dataSize; iData++) {
-             
-             Int_t  manuId    = busStruct->GetManuId(iData);
-             Int_t  channelId = busStruct->GetChannelId(iData);
-             Int_t  charge    = busStruct->GetCharge(iData);
-             //printf("manuId: %d, channelId: %d charge: %d\n", manuId, channelId, charge);
-             // set digit charge
-             digit->SetSignal(charge);
-             digit->SetPhysicsSignal(charge);
-             digit->SetADC(charge);
-             // Get Back the hits at pads
-             Int_t error;
-             error = GetTrackerMapping(buspatchId,manuId,channelId,digit); 
-             if (error) {
-               printf("Mapping Error\n");
-               continue;
-             }
-
-             cathode   = digit->Cathode();
-             ix        = digit->PadX();
-             iy        = digit->PadY();
-             detElemId = digit->DetElemId();      
-             charge    = (Int_t)digit->Signal();
-             iChamber  = detElemId/100 - 1;
-
-             fChambers[iChamber]->RegisterDigit(detElemId,cathode,ix,iy,charge);
-             
-           } // iData
-         } // iBusPatch
-       } // iDsp
-      } // iBlock
-    } // NextDDL
-
     break;
+  }
 
-  }  // end event loop
-  
-  delete digit;
-
-}
+  AliMUONDigitMaker *digitMaker = new AliMUONDigitMaker();
 
-//______________________________________________________________________
-void MUONData::LoadRawTrigger()
-{
-  // 
-  // load raw data for the trigger chambers
-  //
+  AliMUONTriggerCrateStore *crateManager = new AliMUONTriggerCrateStore();
+  crateManager->ReadFromFile();
 
-  fgRawReader->RewindEvents();
+  AliMUONData *muonData = new AliMUONData(0x0,"MUON","MUON");
 
-  Int_t maxEvent = 1000;
-  Int_t minDDL = 0, maxDDL = 1;
-  Int_t detElemId, iChamber, cathode, charge, ix, iy;
+  digitMaker->SetDisplayFlag();
+  digitMaker->SetCrateManager(crateManager);
+  digitMaker->SetMUONData(muonData);
+  muonData->SetDataContainer("D, GLT");
 
-  AliMUONDDLTrigger*       ddlTrigger  = 0x0;
-  AliMUONDarcHeader*       darcHeader  = 0x0;
-  AliMUONRegHeader*        regHeader   = 0x0;
-  AliMUONLocalStruct*      localStruct = 0x0;
-  
-  // crate manager
-  AliMUONTriggerCrateStore* crateManager = new AliMUONTriggerCrateStore();   
-  crateManager->ReadFromFile();
+  digitMaker->Raw2Digits(fgRawReader);
 
-  // Loop over events  
-  Int_t iEvent = 0;
-  TList digitList;
-  
-  Event* aevent = Alieve::gEvent;
-  
-  while (fgRawReader->NextEvent()) {
-    
-    if (iEvent != aevent->GetEventId()) {
-      iEvent++;
-      continue;
+  AliMUONDigit *digit;
+  Int_t cathode, detElemId, ix, iy, charge, chamber, ndigits;
+  for (chamber = 0; chamber < 14; chamber++) {
+    ndigits = (Int_t)muonData->Digits(chamber)->GetEntriesFast();
+    for (Int_t id = 0; id < ndigits; id++) {
+      digit = static_cast<AliMUONDigit*>(muonData->Digits(chamber)->At(id));
+      cathode   = digit->Cathode();
+      ix        = digit->PadX();
+      iy        = digit->PadY();
+      detElemId = digit->DetElemId();      
+      charge    = (Int_t)digit->Signal();
+      chamber   = detElemId/100 - 1;
+      fChambers[chamber]->RegisterDigit(detElemId,cathode,ix,iy,charge);
     }
-    
-    if (iEvent == maxEvent)
-      break;
-    
-    // read DDL while < 2 DDL
-    while(fgRawStreamTrigger->NextDDL()) {
-      
-      if (fgRawStreamTrigger->GetDDL() < minDDL || 
-         fgRawStreamTrigger->GetDDL() > maxDDL)
-       continue;
-      
-      //printf("\niDDL %d\n", fgRawStreamTrigger->GetDDL());
-      
-      ddlTrigger = fgRawStreamTrigger->GetDDLTrigger();
-      darcHeader = ddlTrigger->GetDarcHeader();
-      
-      //printf("Global output %x\n", (Int_t)darcHeader->GetGlobalOutput());
-      
-      // loop over regional structures
-      Int_t nReg = darcHeader->GetRegHeaderEntries();
-      for(Int_t iReg = 0; iReg < nReg ;iReg++){   //REG loop
-       
-       //printf("RegionalId %d\n", iReg);
-       
-       regHeader =  darcHeader->GetRegHeaderEntry(iReg);
-       //  printf("Reg length %d\n",regHeader->GetHeaderLength());
-       
-       // crate info
-       AliMUONTriggerCrate* crate = crateManager->Crate(fgRawStreamTrigger->GetDDL(), iReg);
-       TObjArray *boards = crate->Boards();
-       
-       // loop over local structures
-       Int_t nLocal = regHeader->GetLocalEntries();
-       for(Int_t iLocal = 0; iLocal < nLocal; iLocal++) {  
-         
-         localStruct = regHeader->GetLocalEntry(iLocal);
-         
-         // check if trigger 
-         if (localStruct->GetTriggerY() == 0) { // no empty data
-           
-           // local trigger circuit number
-           AliMUONLocalTriggerBoard* localBoard = (AliMUONLocalTriggerBoard*)boards->At(iLocal+1);
-           
-           //printf("LocalId %d\n", localStruct->GetId());
-           /*
-           Int_t iLocCard  = localBoard->GetNumber();
-           Int_t loStripX  = (Int_t)localStruct->GetXPos();
-           Int_t loStripY  = (Int_t)localStruct->GetYPos();
-           Int_t loDev     = (Int_t)localStruct->GetXDev();
-           */
-           //printf("iLocCard: %d, XPos: %d, YPos: %d Dev: %d\n", iLocCard, loStripX, loStripY, loDev);
-
-           digitList.Clear();
-           if ( GetTriggerMapping(localBoard, localStruct, digitList) ) {
-             for (Int_t iEntry = 0; iEntry < digitList.GetEntries(); iEntry++) {
-
-               AliMUONDigit* digit = (AliMUONDigit*)digitList.At(iEntry);
-               cathode   = digit->Cathode();
-               ix        = digit->PadX();
-               iy        = digit->PadY();
-               detElemId = digit->DetElemId();      
-               charge    = (Int_t)digit->Signal();
-               iChamber  = detElemId/100 - 1;
-               
-               //printf("cha %d deid %d cath %1d ix %d iy %d q %d \n",iChamber,detElemId,cathode,ix,iy,charge);  
-
-               fChambers[iChamber]->RegisterDigit(detElemId,cathode,ix,iy,charge);
-
-             }
-
-           }
-
-         }
-       } // iLocal
-      } // iReg
-    } // NextDDL
-
-    break;
-
-  }  // end event loop
+  }
 
+  delete muonData;
   delete crateManager;
-
-}
-
-//______________________________________________________________________
-Int_t MUONData::GetTrackerMapping(Int_t buspatchId, UShort_t manuId, UChar_t channelId, AliMUONDigit* digit)
-{
-  //
-  // decode digits mapping for the tracking chambers
-  //
-  
-  // getting DE from buspatch
-  Int_t detElemId = fgBusPatchManager->GetDEfromBus(buspatchId);
-  //AliDebug(3,Form("detElemId: %d busPatchId %d\n", detElemId, buspatchId));
-
-  const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(detElemId, manuId);  
-  AliMpPad pad = seg->PadByLocation(AliMpIntPair(manuId,channelId),kTRUE);
-
-  if (!pad.IsValid())
-  {
-    printf("No pad for detElemId: %d, busPatchId %d, manuId: %d, channelId: %d\n",detElemId, buspatchId, manuId, channelId);
-    
-    return 1;
-  } // return error
-
-  // Getting padX, padY and cathode number.
-  Int_t padX = pad.GetIndices().GetFirst();
-  Int_t padY = pad.GetIndices().GetSecond();
-  Int_t iCath = AliMpDEManager::GetCathod(detElemId,seg->PlaneType());
-
-  // storing into digits
-  digit->SetPadX(padX);
-  digit->SetPadY(padY);
-  digit->SetCathode(iCath);
-  digit->SetDetElemId(detElemId);
-  digit->SetElectronics(manuId,channelId);
-  
-  //printf("detElemId: %d, busPatchId %d, manuId: %d, channelId: %d, padx: %d pady %d\n",detElemId, buspatchId, manuId, channelId, padX, padY);
-  
-  return 0;
-
-}
-
-//______________________________________________________________________
-Int_t MUONData::GetTriggerMapping(AliMUONLocalTriggerBoard* localBoard, 
-                                 AliMUONLocalStruct* localStruct,
-                                 TList& digitList)
-{
-  //
-  // decode digits mapping for the trigger chambers
-  //
-
-  Int_t detElemId;
-  Int_t nBoard;
-  Int_t iCath = -1;
-  Int_t iChamber = 0;
-  Int_t xyPattern = 0;
-
-  // loop over x1-4 and y1-4
-  for (Int_t icase = 0; icase < 8; icase++) {
-
-    // get chamber, cathode and associated trigger response pattern
-    GetTriggerChamber(localStruct, xyPattern, iChamber, iCath, icase);
-  
-    if (!xyPattern) continue;
-
-    // get detElemId
-    AliMUONTriggerCircuit triggerCircuit;
-    detElemId = triggerCircuit.DetElemId(iChamber, localBoard->GetName());
-    nBoard    = localBoard->GetNumber();
-
-    const AliMpVSegmentation* seg 
-      = AliMpSegmentation::Instance()
-        ->GetMpSegmentation(detElemId, AliMp::GetCathodType(iCath));  
-
-    // loop over the 16 bits of pattern
-    for (Int_t ibitxy = 0; ibitxy < 16; ibitxy++) {
-    
-      if ((xyPattern >> ibitxy) & 0x1) {
-
-       // not quite sure about this
-       Int_t offset = 0;
-       if (iCath && localBoard->GetSwitch(6)) offset = -8;
-
-       AliMpPad pad = seg->PadByLocation(AliMpIntPair(nBoard,ibitxy+offset),kTRUE);
-
-       AliMUONDigit* digit = new  AliMUONDigit();
-       if (!pad.IsValid()) {
-         AliWarning(Form("No pad for detElemId: %d, nboard %d, ibitxy: %d\n",
-                         detElemId, nBoard, ibitxy));
-         continue;
-       } // 
-
-       Int_t padX = pad.GetIndices().GetFirst();
-       Int_t padY = pad.GetIndices().GetSecond();
-
-       // file digit
-       digit->SetSignal(1);
-       digit->SetPadX(padX);
-       digit->SetPadY(padY);
-       digit->SetCathode(iCath);
-       digit->SetDetElemId(detElemId);
-       digit->SetElectronics(nBoard, ibitxy);
-       digitList.Add(digit);
-       
-      }// xyPattern
-    }// ibitxy
-  }// case
-
-  return 1;
-
-}
-
-//____________________________________________________________________
-void MUONData::GetTriggerChamber(AliMUONLocalStruct* localStruct, Int_t& xyPattern, Int_t& iChamber, Int_t& iCath, Int_t icase)
-{
-  //
-  // extract digits pattern
-  //  
-
-  // get chamber & cathode number, (chamber starts at 0 !)
-  switch(icase) {
-  case 0: 
-    xyPattern =  localStruct->GetX1();
-    iCath = 0;
-    iChamber = 10;
-    break;
-  case 1: 
-    xyPattern =  localStruct->GetX2();
-    iCath = 0;
-    iChamber = 11;
-    break;
-  case 2: 
-    xyPattern =  localStruct->GetX3();
-    iCath = 0;
-    iChamber = 12;
-    break;
-  case 3: 
-    xyPattern =  localStruct->GetX4();
-    iCath = 0;
-    iChamber = 13;
-    break;
-  case 4: 
-    xyPattern =  localStruct->GetY1();
-    iCath = 1;
-    iChamber = 10;
-    break;
-  case 5: 
-    xyPattern =  localStruct->GetY2();
-    iCath = 1;
-    iChamber = 11;
-    break;
-  case 6: 
-    xyPattern =  localStruct->GetY3();
-    iCath = 1;
-    iChamber = 12;
-    break;
-  case 7: 
-    xyPattern =  localStruct->GetY4();
-    iCath = 1;
-    iChamber = 13;
-    break;
-  }
+  delete digitMaker;
 
 }
 
@@ -761,7 +388,7 @@ Int_t MUONData::GetTrack(Int_t index)
   // return track stack number for "index"-th track with hits in the chambers
   //
 
-  if (index < 100) {
+  if (index < 256) {
     return fTrackList[index];
   } else {
     return -1;
index 5bf9b34..41f64d2 100644 (file)
@@ -9,17 +9,8 @@
 
 class TTree;
 class TString;
-class TList;
 
 class AliRawReader;
-class AliMUONRawStreamTracker;
-class AliMUONRawStreamTrigger;
-class AliMUONDigit;
-class AliMpSegFactory;
-class AliMpDDLStore;
-class AliMUONLocalTriggerBoard;
-class AliMUONLocalStruct;
-class AliMUONLocalStruct;
 
 namespace Alieve {
 
@@ -33,24 +24,9 @@ class MUONData : public TObject, public Reve::ReferenceCount
   std::vector<MUONChamberData*>   fChambers;           // vector of 14 chambers
 
   static AliRawReader*            fgRawReader;         // raw reader
-  static AliMUONRawStreamTracker* fgRawStreamTracker;  // tracker raw streamer 
-  static AliMUONRawStreamTrigger* fgRawStreamTrigger;  // trigger raw streamer
-  static AliMpSegFactory*         fgSegFactory;        // segmentation mapping
-  static AliMpDDLStore*           fgBusPatchManager;   // bus mapping
-
-  Int_t GetTrackerMapping(Int_t buspatchId, UShort_t manuId,
-                         UChar_t channelId, AliMUONDigit* digit );
-
-  Int_t GetTriggerMapping(AliMUONLocalTriggerBoard* localBoard, 
-                         AliMUONLocalStruct* localStruct,
-                         TList& digitList);
-
-  void GetTriggerChamber(AliMUONLocalStruct* localStruct,
-                         Int_t& xyPattern, Int_t& iChamber, Int_t& iCath, 
-                        Int_t iCase);
 
   Int_t fNTrackList;      // number of MC tracks which have hits
-  Int_t fTrackList[100];  // list of MC tracks which have hits
+  Int_t fTrackList[256];  // list of MC tracks which have hits
 
  public:
 
@@ -66,8 +42,6 @@ class MUONData : public TObject, public Reve::ReferenceCount
   void LoadRecPoints(TTree* tree);
   void LoadHits(TTree* tree);
   void LoadRaw(TString fileName);
-  void LoadRawTracker();
-  void LoadRawTrigger();
 
   void CreateChamber(Int_t chamber);
   void CreateAllChambers();
index 512a470..05fdf57 100644 (file)
@@ -488,31 +488,17 @@ void MUONTrack::MakeMUONTrack(AliMUONTrack *mtrack)
   // middle z between the two detector planes of the trigger chambers
   Float_t zg[4] = { -1603.5, -1620.5, -1703.5, -1720.5 };
 
-  AliMUONTrackParam *mtp = mtrack->GetTrackParamAtVertex();
-  Float_t pt = TMath::Sqrt(mtp->Px()*mtp->Px()+mtp->Py()*mtp->Py());
-  Float_t pv[3];
-  pv[0] = mtp->Px();
-  pv[1] = mtp->Py();
-  pv[2] = mtp->Pz();
-  fP.Set(pv);
+  Float_t pt    = 0.0;
+  Float_t pv[3] = { 0.0 };
 
   if (fIsMUONTrack) {
-    //PH The line below is replaced waiting for a fix in Root
-    //PH which permits to use variable siza arguments in CINT
-    //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
     if (mtrack->GetMatchTrigger()) {
-      //PH      track->SetName(Form("MUONTrack %2d (MT)", fLabel));
       sprintf(form,"MUONTrack %2d (MT)", fLabel);
-      SetName(form);
-      SetLineStyle(1);
-      SetLineColor(ColorIndex(pt));
     } else {
-      //PH      track->SetName(Form("MUONTrack %2d     ", fLabel));
       sprintf(form,"MUONTrack %2d     ", fLabel);
-      SetName(form);
-      SetLineStyle(1);
-      SetLineColor(ColorIndex(pt));
     }
+    SetName(form);
+    SetLineStyle(1);
   }
   
   AliMUONTrackParam *trackParam = mtrack->GetTrackParamAtVertex(); 
@@ -534,13 +520,25 @@ void MUONTrack::MakeMUONTrack(AliMUONTrack *mtrack)
   TClonesArray* trackParamAtHit = mtrack->GetTrackParamAtHit();
 
   for (Int_t iHit = 0; iHit < nTrackHits; iHit++){
+
     trackParam = (AliMUONTrackParam*) trackParamAtHit->At(iHit); 
+    
+    if (iHit == 0) {
+      if (IsMUONTrack()) {
+       pt = TMath::Sqrt(trackParam->Px()*trackParam->Px()+trackParam->Py()*trackParam->Py());
+       SetLineColor(ColorIndex(pt));
+      }
+      pv[0] = trackParam->Px();
+      pv[1] = trackParam->Py();
+      pv[2] = trackParam->Pz();
+      fP.Set(pv);
+    }
+
     xRec  = trackParam->GetNonBendingCoor();
     yRec  = trackParam->GetBendingCoor();
     zRec  = trackParam->GetZ();
     
     iCha = AliMUONConstants::ChamberNumber(zRec);
-    //printf("Hit %d x %f y %f z %f c %2d \n",iHit,xRec,yRec,zRec,iCha);
     
     xr[iHit] = xRec;
     yr[iHit] = yRec;
@@ -910,7 +908,10 @@ void MUONTrack::Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1, Int_t
 
   Double_t vect[7], vout[7];
   Double_t step = 1.0;
-  Double_t zMax;
+  Double_t zMax = 0.0;
+  Int_t  charge =   0;
+  AliMUONTrackParam *trackParam = 0;
+  TClonesArray *trackParamAtHit = 0;
 
   if (i2 == 9999) {
     zMax = zr[i1]+1.5*step;
@@ -918,12 +919,18 @@ void MUONTrack::Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1, Int_t
     zMax = zr[i2]+1.5*step;
   }
 
-  AliMUONTrackParam *trackParam = fTrack->GetTrackParamAtVertex(); 
-  Int_t charge = (Int_t)TMath::Sign(1.0,trackParam->GetInverseBendingMomentum());
-  
-  TClonesArray* trackParamAtHit = fTrack->GetTrackParamAtHit();
-  trackParam = (AliMUONTrackParam*)trackParamAtHit->At(i1); 
+  trackParamAtHit = fTrack->GetTrackParamAtHit();
 
+  if (IsMUONTrack()) {
+    trackParam = (AliMUONTrackParam*)trackParamAtHit->At(i1); 
+    charge = (Int_t)TMath::Sign(1.0,trackParam->GetInverseBendingMomentum());
+  }
+  if (IsRefTrack()) {
+    trackParam = fTrack->GetTrackParamAtVertex();
+    charge = (Int_t)TMath::Sign(1.0,trackParam->GetInverseBendingMomentum());
+    trackParam = (AliMUONTrackParam*)trackParamAtHit->At(i1); 
+  }
+  
   vect[0] = xr[i1];
   vect[1] = yr[i1];
   vect[2] = zr[i1];
@@ -942,7 +949,7 @@ void MUONTrack::Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1, Int_t
       vect[i] = vout[i];
     }
   }
-
+  
 }
 
 //______________________________________________________________________