03ead8d873d00961b055b086b4fb57152ea1ecf4
[u/mrichter/AliRoot.git] / MUON / AliMUONTrigger.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                         *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 #include <TClonesArray.h>
19
20 #include "AliLog.h"
21 #include "AliRun.h"
22 #include "AliRunLoader.h"
23 #include "AliTriggerInput.h"
24
25 #include "AliMUON.h"
26 #include "AliMUONLoader.h"
27 #include "AliMUONData.h"
28 #include "AliMUONDigit.h"
29 #include "AliMUONGlobalTrigger.h"
30 #include "AliMUONTrigger.h"
31
32 ///
33 /// \class AliMUONTrigger
34 ///
35 /// Implementation of AliTriggerDetector for MUON detector
36 ///
37 /// So far, the inputs are taken from AliMUONTriggerDecision object
38 /// April 06, E.L.T.
39 /// May 06, taken info from Global Trigger branch (Ch.F)
40
41 //----------------------------------------------------------------------
42 ClassImp(AliMUONTrigger)
43
44 //----------------------------------------------------------------------
45 AliMUONTrigger::AliMUONTrigger()
46   : AliTriggerDetector() 
47 {
48    SetName("MUON");
49    CreateInputs();
50 }
51
52 //----------------------------------------------------------------------
53 void AliMUONTrigger::CreateInputs()
54 {
55    // inputs 
56    
57    // Do not create inputs again!!
58    if( fInputs.GetEntriesFast() > 0 ) return;
59    
60    fInputs.AddLast( new AliTriggerInput( "MUON_Single_LPt_L0", "Single Low Pt",  0x01 ) );
61    fInputs.AddLast( new AliTriggerInput( "MUON_Single_HPt_L0", "Single High Pt", 0x02 ) );
62
63    fInputs.AddLast( new AliTriggerInput( "MUON_Unlike_LPt_L0", "Dimuon Unlike Sign pair Low Pt",  0x04 ) );
64    fInputs.AddLast( new AliTriggerInput( "MUON_Unlike_HPt_L0", "Dimuon Unlike Sign pair High Pt", 0x08 ) );
65
66    fInputs.AddLast( new AliTriggerInput( "MUON_Like_LPt_L0", "Dimuon Like Sign pair Low Pt",  0x10 ) );
67    fInputs.AddLast( new AliTriggerInput( "MUON_Like_HPt_L0", "Dimuon Like Sign pair High Pt", 0x20 ) );
68 }
69
70 //----------------------------------------------------------------------
71 void AliMUONTrigger::Trigger()
72 {
73   // sets the trigger inputs
74   AliMUONGlobalTrigger* globalTrigger;
75   TClonesArray* globalTriggerArray;
76
77    AliRunLoader* runLoader = gAlice->GetRunLoader();
78
79    AliLoader * muonLoader = runLoader->GetLoader("MUONLoader");
80    muonLoader->LoadDigits("READ");
81
82    // Creating MUON data container
83    AliMUONData* muonData = new AliMUONData(muonLoader,"MUON","MUON");
84
85    // get global info
86    muonData->SetTreeAddress("GLT");
87    muonData->GetTriggerD();
88    globalTriggerArray = muonData->GlobalTrigger(); 
89    if (globalTriggerArray == 0x0) { 
90      AliWarning("No Global Trigger Array available");
91      return;
92    }
93    globalTrigger = (AliMUONGlobalTrigger*)globalTriggerArray->UncheckedAt(0);
94
95    if (globalTrigger == 0x0) { 
96      AliWarning("No Global Trigger available");
97      return;
98    }
99    // set CTP
100    if (globalTrigger->SingleLpt())      SetInput("MUON_Single_LPt_L0");
101    if (globalTrigger->SingleHpt())      SetInput("MUON_Single_HPt_L0");
102    
103    if (globalTrigger->PairUnlikeLpt())  SetInput("MUON_Unlike_LPt_L0");
104    if (globalTrigger->PairUnlikeHpt())  SetInput("MUON_Unlike_HPt_L0");
105    
106    if (globalTrigger->PairLikeLpt())    SetInput("MUON_Like_LPt_L0");
107    if (globalTrigger->PairLikeHpt())    SetInput("MUON_Like_HPt_L0");
108
109    muonData->ResetTrigger();
110    muonLoader->UnloadDigits();
111
112 }