Test Digit macro
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Mar 2006 09:57:03 +0000 (09:57 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Mar 2006 09:57:03 +0000 (09:57 +0000)
EMCAL/macros/TestEMCALDigit.C [new file with mode: 0644]

diff --git a/EMCAL/macros/TestEMCALDigit.C b/EMCAL/macros/TestEMCALDigit.C
new file mode 100644 (file)
index 0000000..2327ab9
--- /dev/null
@@ -0,0 +1,93 @@
+
+
+// Test Macro, shows how to load Digits and Geometry, and how can we get 
+// some of the parameters and variables.
+// Author: Gustavo Conesa
+
+void TestEMCALDigit()
+{
+   
+  // Getting EMCAL Detector and Geometry.
+  
+  AliRunLoader *rl = AliRunLoader::Open("galice.root",AliConfig::GetDefaultEventFolderName(),
+                         "read");
+  if (rl == 0x0)
+      cout<<"Can not instatiate the Run Loader"<<endl;
+
+  rl->LoadgAlice();//Needed to get geometry
+
+  AliEMCALLoader *emcalLoader = dynamic_cast<AliEMCALLoader*>
+    (rl->GetDetectorLoader("EMCAL"));
+
+  //AliEMCALGeometry * geom = AliEMCALGeometry::GetInstance();
+  //AliEMCALGeometry *geom = dynamic_cast<AliEMCAL*>(rl->GetAliRun()->GetDetector("EMCAL"))->GetGeometry();
+
+  AliRun * alirun   = rl->GetAliRun(); // Needed to get Geometry
+  AliEMCAL * emcal  = (AliEMCAL*)alirun->GetDetector("EMCAL");
+  AliEMCALGeometry * geom = emcal->GetGeometry();
+  
+  if (geom==0)
+    cout<<"Did not get geometry from EMCALLoader"<<endl;
+
+  //Load Digits
+  rl->LoadDigits("EMCAL");
+
+  //Get maximum number of events
+  Int_t maxevent =  rl->GetNumberOfEvents();
+  cout<<"Number of events "<<maxevent<<endl;
+  //maxevent = 1 ;
+
+  Int_t iEvent  = -1 ;
+  Float_t amp   = -1 ;
+  Float_t time  = -1 ;
+  Int_t id      = -1 ;
+  Int_t iSupMod =  0 ;
+  Int_t iTower  =  0 ;
+  Int_t iIphi   =  0 ;
+  Int_t iIeta   =  0 ;
+  Int_t iphi    =  0 ;
+  Int_t ieta    =  0 ;
+
+
+  AliEMCALDigit * dig;
+  
+  for ( iEvent=0; iEvent<maxevent; iEvent++)
+    {
+      cout <<  " ======> Event " << iEvent << endl ;
+      //Load Event
+      rl->GetEvent(iEvent);
+
+      //Fill array of digits
+      TClonesArray *digits = emcalLoader->Digits();    
+
+      //Get digits from the list      
+      for(Int_t idig = 0; idig< digits->GetEntries();idig++){
+       //cout<<">> idig "<<idig<<endl;
+       dig = static_cast<AliEMCALDigit *>(digits->At(idig)) ;
+
+       if(dig != 0){
+         id   = dig->GetId() ; //cell (digit) label
+         amp  = dig->GetAmp(); //amplitude in cell (digit)
+         time = dig->GetTime();//time of creation of digit after collision
+
+         cout<<"Cell ID "<<id<<" Amp "<<amp<<endl;//" time "<<time<<endl;
+
+         //Geometry methods  
+         geom->GetCellIndex(id,iSupMod,iTower,iIphi,iIeta); 
+         //Gives SuperModule and Tower numbers
+         geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,
+                                           iIphi, iIeta,iphi,ieta);
+         //Gives label of cell in eta-phi position per each supermodule
+
+         cout<< "SModule "<<iSupMod<<"; Tower "<<iTower
+             <<"; Eta "<<iIeta<<"; Phi "<<iIphi
+             <<"; Cell Eta "<<ieta<<"; Cell Phi "<<iphi<<endl;
+       }
+       else
+         cout<<"Digit pointer 0x0"<<endl;
+      }
+      
+    }
+}
+