]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updated to use the new CTP framework (Christian)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 May 2006 12:53:55 +0000 (12:53 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 May 2006 12:53:55 +0000 (12:53 +0000)
MUON/AliMUONTrigger.cxx
MUON/MUONefficiency.C
MUON/MUONmassPlot_ESD.C

index 67f7ec9f77d6a637f6b1a2134c866e658836eec7..5f680ab0ef95dd9f7df819db01e7411f923ce9cc 100644 (file)
@@ -24,7 +24,7 @@
 #include "AliMUONLoader.h"
 #include "AliMUONData.h"
 #include "AliMUONDigit.h"
-#include "AliMUONTriggerDecision.h"
+#include "AliMUONGlobalTrigger.h"
 #include "AliMUONTrigger.h"
 
 ///
@@ -33,7 +33,8 @@
 /// Implementation of AliTriggerDetector for MUON detector
 ///
 /// So far, the inputs are taken from AliMUONTriggerDecision object
-///
+/// April 06, E.L.T.
+/// May 06, taken info from Global Trigger branch (Ch.F)
 
 //----------------------------------------------------------------------
 ClassImp(AliMUONTrigger)
@@ -79,72 +80,49 @@ void AliMUONTrigger::CreateInputs()
 void AliMUONTrigger::Trigger()
 {
   // sets the trigger inputs
+  AliMUONGlobalTrigger* globalTrigger;
+  TClonesArray* globalTriggerArray;
 
    AliRunLoader* runLoader = gAlice->GetRunLoader();
 
    AliLoader * muonLoader = runLoader->GetLoader("MUONLoader");
    muonLoader->LoadDigits("READ");
+
    // Creating MUON data container
    AliMUONData* muonData = new AliMUONData(muonLoader,"MUON","MUON");
-   muonData->SetTreeAddress("D");
-   muonData->GetDigits();
-   Int_t idebug = 1;
-   // Creating MUONTriggerDecision
-   AliMUONTriggerDecision* decision = new AliMUONTriggerDecision(muonLoader ,idebug,muonData);
-   AliMUONDigit * mDigit;
-   Int_t tracks[10];
-   Int_t charges[10];
-   Int_t digits[7];
-
-   for(Int_t ichamber=10; ichamber<14; ichamber++) {
-      Int_t idigit, ndigits;
-      ndigits = (Int_t) muonData->Digits(ichamber)->GetEntriesFast();
-//            printf(">>> Chamber Cathode ndigits %d %d %d\n",ichamber,icathode,ndigits);
-      for(idigit=0; idigit<ndigits; idigit++) {
-         mDigit = static_cast<AliMUONDigit*>(muonData->Digits(ichamber)->At(idigit));
-         digits[0] = mDigit->PadX();
-         digits[1] = mDigit->PadY();
-         digits[2] = mDigit->Cathode();
-         digits[3] = mDigit->Signal();
-         digits[4] = mDigit->Physics();
-         digits[5] = mDigit->Hit();
-         digits[6] = mDigit->DetElemId();
-
-         Int_t digitindex = 0 ;
-  //       printf("ichamber ix iy %d %d %d \n",ichamber,mDigit->PadX(),mDigit->PadY());
-
-         decision->AddDigit(ichamber, tracks, charges, digits, digitindex );
-      } // loop on digits
-   } // loop on chambers
-   muonData->ResetDigits();
-   decision->Trigger();
-   decision->ClearDigits();
-
-   // Set the trigger inputs = "global decision" 
-   Int_t singlePlus[3];  // tot num of single plus
-   Int_t singleMinus[3]; // tot num of single minus
-   Int_t singleUndef[3]; // tot num of single undefined
-   Int_t pairUnlike[3];  // tot num of unlike-sign pairs
-   Int_t pairLike[3];    // tot num of like-sign pairs
-   decision->GetGlobalTrigger(singlePlus, singleMinus, singleUndef, pairUnlike, pairLike);
-
-   if( singlePlus[0] )  SetInput("MUON_SPlus_LPt_L0");
-   if( singlePlus[1] )  SetInput("MUON_SPlus_HPt_L0");
-   if( singlePlus[2] )  SetInput("MUON_SPlus_All_L0");
+
+   // get global info
+   muonData->SetTreeAddress("GLT");
+   muonData->GetTriggerD();
+   globalTriggerArray = muonData->GlobalTrigger(); 
+   globalTrigger = (AliMUONGlobalTrigger*)globalTriggerArray->UncheckedAt(0);
+
+   if (globalTrigger == 0x0) { 
+     AliWarning("No Global Trigger available");
+     return;
+   }
+   // set CTP
+   if (globalTrigger->SinglePlusLpt())  SetInput("MUON_SPlus_LPt_L0");
+   if (globalTrigger->SinglePlusHpt())  SetInput("MUON_SPlus_HPt_L0");
+   if (globalTrigger->SinglePlusApt())  SetInput("MUON_SPlus_All_L0");
    
-   if( singleMinus[0] ) SetInput("MUON_SMinus_LPt_L0");
-   if( singleMinus[1] ) SetInput("MUON_SMinus_HPt_L0");
-   if( singleMinus[2] ) SetInput("MUON_SMinus_All_L0");
+   if (globalTrigger->SingleMinusLpt()) SetInput("MUON_SMinus_LPt_L0");
+   if (globalTrigger->SingleMinusHpt()) SetInput("MUON_SMinus_HPt_L0");
+   if (globalTrigger->SingleMinusApt()) SetInput("MUON_SMinus_All_L0");
    
-   if( singleUndef[0] ) SetInput("MUON_SUndef_LPt_L0");
-   if( singleUndef[1] ) SetInput("MUON_SUndef_HPt_L0");
-   if( singleUndef[2] ) SetInput("MUON_SUndef_All_L0");
+   if (globalTrigger->SingleUndefLpt()) SetInput("MUON_SUndef_LPt_L0");
+   if (globalTrigger->SingleUndefHpt()) SetInput("MUON_SUndef_HPt_L0");
+   if (globalTrigger->SingleUndefApt()) SetInput("MUON_SUndef_All_L0");
    
-   if( pairUnlike[0] )  SetInput("MUON_Unlike_LPt_L0");
-   if( pairUnlike[1] )  SetInput("MUON_Unlike_HPt_L0");
-   if( pairUnlike[2] )  SetInput("MUON_Unlike_All_L0");
+   if (globalTrigger->PairUnlikeLpt())  SetInput("MUON_Unlike_LPt_L0");
+   if (globalTrigger->PairUnlikeHpt())  SetInput("MUON_Unlike_HPt_L0");
+   if (globalTrigger->PairUnlikeApt())  SetInput("MUON_Unlike_All_L0");
    
-   if( pairLike[0] )    SetInput("MUON_Like_LPt_L0");
-   if( pairLike[1] )    SetInput("MUON_Like_HPt_L0");
-   if( pairLike[2] )    SetInput("MUON_Like_All_L0");
+   if (globalTrigger->PairLikeLpt())    SetInput("MUON_Like_LPt_L0");
+   if (globalTrigger->PairLikeHpt())    SetInput("MUON_Like_HPt_L0");
+   if (globalTrigger->PairLikeApt())    SetInput("MUON_Like_All_L0");
+
+   muonData->ResetTrigger();
+   muonLoader->UnloadDigits();
+
 }
index 42b9016dc7b48a6dfebf67b9aae70d8a0fe96560..64b27c3025de130b1f74785f779f84167cc7bc42 100644 (file)
@@ -297,7 +297,7 @@ Bool_t MUONefficiency( Int_t ResType = 553, Int_t FirstEvent = 0, Int_t LastEven
       return kFALSE;
     }
 
-    Int_t triggerWord = esd->GetTrigger();
+    Int_t triggerWord = esd->GetTriggerMask();
     Int_t nTracks = (Int_t)esd->GetNumberOfMuonTracks() ; 
 
     if (PRINTLEVEL > 0){
@@ -459,7 +459,7 @@ Bool_t MUONefficiency( Int_t ResType = 553, Int_t FirstEvent = 0, Int_t LastEven
                  ptTrig = 0x200;// mask for Lpt unlike sign pair
                
 
-               if (esd->GetTrigger() &  ptTrig) NbTrigger++;
+               if (esd->GetTriggerMask() &  ptTrig) NbTrigger++;
                
                if (invMass > invMassMinInPeak && invMass < invMassMaxInPeak) {
                  EventInMass++;
@@ -467,7 +467,7 @@ Bool_t MUONefficiency( Int_t ResType = 553, Int_t FirstEvent = 0, Int_t LastEven
                  hPtResonance->Fill(fVtot.Pt());
 
                  // match with trigger
-                 if (muonTrack->GetMatchTrigger() && (esd->GetTrigger() & ptTrig))  EventInMassMatch++;
+                 if (muonTrack->GetMatchTrigger() && (esd->GetTriggerMask() & ptTrig))  EventInMassMatch++;
 
                }
                
index c390a18784d035fbf9ccf2b053a904becbcc1622..21af0a13e271431b1924787b30a7e6eddd672ac3 100644 (file)
@@ -81,9 +81,9 @@ Bool_t MUONmassPlot(char* filename = "galice.root", Int_t FirstEvent = 0, Int_t
   TH1F *hChi2PerDof = new TH1F("hChi2PerDof", "Muon track chi2/d.o.f.", 100, 0., 20.);
   TH1F *hInvMassAll = new TH1F("hInvMassAll", "Mu+Mu- invariant mass (GeV/c2)", 480, 0., 12.);
   TH1F *hInvMassBg = new TH1F("hInvMassBg", "Mu+Mu- invariant mass BG(GeV/c2)", 480, 0., 12.);
-TH2F *hInvMassAll_vs_Pt = new TH2F("hInvMassAll_vs_Pt","hInvMassAll_vs_Pt",480,0.,12.,80,0.,20.);
-TH2F *hInvMassBgk_vs_Pt = new TH2F("hInvMassBgk_vs_Pt","hInvMassBgk_vs_Pt",480,0.,12.,80,0.,20.);
-TH1F *hInvMassRes;
+  TH2F *hInvMassAll_vs_Pt = new TH2F("hInvMassAll_vs_Pt","hInvMassAll_vs_Pt",480,0.,12.,80,0.,20.);
+  TH2F *hInvMassBgk_vs_Pt = new TH2F("hInvMassBgk_vs_Pt","hInvMassBgk_vs_Pt",480,0.,12.,80,0.,20.);
+  TH1F *hInvMassRes;
   TH1F *hPrimaryVertex = new TH1F("hPrimaryVertex","SPD reconstructed Z vertex",120,-12,12);
 
   if (ResType == 553) {
@@ -277,10 +277,10 @@ TH1F *hInvMassRes;
              else 
                ptTrig =  0x200;// mask for Lpt unlike sign pair
 
-             if (esd->GetTrigger() &  ptTrig) NbTrigger++; 
+             if (esd->GetTriggerMask() &  ptTrig) NbTrigger++; 
              if (invMass > massMin && invMass < massMax) {
                EventInMass++;
-               if (muonTrack->GetMatchTrigger() && (esd->GetTrigger() & ptTrig))// match with trigger
+               if (muonTrack->GetMatchTrigger() && (esd->GetTriggerMask() & ptTrig))// match with trigger
                  EventInMassMatch++;
 
                hRapResonance->Fill(fVtot.Rapidity());