]>
Commit | Line | Data |
---|---|---|
a653f08b | 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 | ||
07d83718 | 16 | /* $Id$ */ |
17 | ||
e54bf126 | 18 | /// \ingroup macros |
19 | /// \file MUONTrigger.C | |
20 | /// \brief This macro is to be used to check the trigger algorithm w/o having to | |
21 | /// (re-)perform simulation and digitalization. | |
22 | /// | |
23 | /// See full description on the \ref README_trigger page. | |
24 | /// | |
25 | /// \author P.Crochet (LPC) | |
a653f08b | 26 | |
27 | #if !defined(__CINT__) || defined(__MAKECINT__) | |
28 | #include "AliRun.h" | |
29 | #include "AliMUON.h" | |
a653f08b | 30 | #include "AliMUONDigit.h" |
d6ea26eb | 31 | #include "AliMUONTriggerElectronics.h" |
32 | #include "AliMUONCalibrationData.h" | |
33 | #include "AliCDBManager.h" | |
53958b19 | 34 | #include "AliMUONDataInterface.h" |
35 | #include "AliMUONMCDataInterface.h" | |
36 | #include "AliMUONVTriggerStore.h" | |
37 | #include "AliMUONDigitStoreV1.h" | |
07d83718 | 38 | #include <TClonesArray.h> |
53958b19 | 39 | #include "AliMpCDB.h" |
40 | #include <TFile.h> | |
a653f08b | 41 | #endif |
53958b19 | 42 | |
43 | void MUONTrigger(const char* filename) | |
a653f08b | 44 | { |
07d83718 | 45 | // Creating Run Loader and openning file containing Digits |
53958b19 | 46 | AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONLoader","UPDATE"); |
a653f08b | 47 | if (RunLoader ==0x0) { |
53958b19 | 48 | printf(">>> Error : Error Opening %s file \n",filename); |
29348618 | 49 | return; |
a653f08b | 50 | } |
51 | // Loading AliRun master | |
52 | if (RunLoader->GetAliRun() == 0x0) RunLoader->LoadgAlice(); | |
53 | gAlice = RunLoader->GetAliRun(); | |
54 | ||
55 | // Loading MUON subsystem | |
53958b19 | 56 | AliLoader* MUONLoader = RunLoader->GetDetectorLoader("MUON"); |
a653f08b | 57 | MUONLoader->LoadDigits("READ"); |
53958b19 | 58 | MUONLoader->LoadRecPoints("UPDATE"); // absolutely essential !!! |
07d83718 | 59 | |
a653f08b | 60 | // Creating MUONTriggerDecision |
07d83718 | 61 | AliCDBManager* cdbManager = AliCDBManager::Instance(); |
162637e4 | 62 | cdbManager->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); |
07d83718 | 63 | |
8ee6f794 | 64 | Int_t runnumber = 0; |
65 | cdbManager->SetRun(runnumber); | |
53958b19 | 66 | AliMpCDB::LoadDDLStore(); |
07d83718 | 67 | |
53958b19 | 68 | AliMUONCalibrationData *CalibrationData = new AliMUONCalibrationData(runnumber); |
69 | AliMUONTriggerElectronics *TriggerProcessor = new AliMUONTriggerElectronics(CalibrationData); | |
70 | ||
71 | Int_t nevents = RunLoader->GetNumberOfEvents(); | |
72 | AliMUONVDigitStore* digitStore=0x0; | |
73 | AliMUONVTriggerStore* triggerStore=0x0; | |
a653f08b | 74 | |
75 | for(Int_t ievent = 0; ievent < nevents; ievent++) { | |
d6ea26eb | 76 | printf(">>> Event %i out of %i \n",ievent,nevents); |
8ee6f794 | 77 | RunLoader->GetEvent(ievent); |
d6ea26eb | 78 | |
53958b19 | 79 | MUONLoader->LoadRecPoints("update"); |
80 | MUONLoader->CleanRecPoints(); | |
81 | MUONLoader->MakeRecPointsContainer(); | |
82 | TTree* clustersTree = MUONLoader->TreeR(); | |
83 | TFile* cfile = clustersTree->GetCurrentFile(); | |
84 | if ( !cfile ) | |
85 | { | |
86 | cout << " could not find Cluster file " << endl; | |
87 | return; | |
88 | } | |
07d83718 | 89 | |
53958b19 | 90 | MUONLoader->LoadDigits("read"); |
91 | TTree* digitsTree = MUONLoader->TreeD(); | |
92 | TFile* dfile = digitsTree->GetCurrentFile(); | |
93 | if ( !dfile ) | |
94 | { | |
95 | cout << " could not find Digit file " << endl; | |
96 | return; | |
97 | } | |
07d83718 | 98 | |
53958b19 | 99 | // here start reconstruction |
100 | if (!digitStore) digitStore = AliMUONVDigitStore::Create(*digitsTree); | |
101 | if (!triggerStore) triggerStore = AliMUONVTriggerStore::Create(*digitsTree); | |
102 | // insure we start with empty stores | |
103 | if ( digitStore ) | |
104 | { | |
105 | digitStore->Clear(); | |
106 | Bool_t alone = ( triggerStore ? kFALSE : kTRUE ); | |
107 | Bool_t ok = digitStore->Connect(*digitsTree,alone); | |
108 | if (!ok) | |
109 | { | |
110 | cerr << "Could not connect digitStore to digitsTree \n"; | |
111 | return; | |
d6ea26eb | 112 | } |
53958b19 | 113 | } else { |
114 | cerr << "digitStore does not exist " << "\n"; | |
115 | return; | |
116 | } | |
117 | ||
118 | digitsTree->GetEvent(0); | |
d6ea26eb | 119 | |
53958b19 | 120 | // process trigger response |
121 | TriggerProcessor->Digits2Trigger(*digitStore,*triggerStore); | |
122 | ||
123 | //triggerStore->Print(); | |
124 | ||
125 | Bool_t ok(kFALSE); | |
126 | if ( triggerStore ) { | |
127 | ok = triggerStore->Connect(*clustersTree,kTRUE); | |
128 | if (!ok) | |
129 | { | |
130 | cerr << "Could not create triggerStore branches in TreeR " << "\n"; | |
131 | return; | |
132 | } | |
133 | } else { | |
134 | cerr << "triggerStore does not exist " << "\n"; | |
135 | return; | |
136 | } | |
137 | ||
138 | // fill TreeR | |
139 | clustersTree->Fill(); | |
140 | MUONLoader->UnloadDigits(); | |
141 | MUONLoader->WriteRecPoints("OVERWRITE"); | |
142 | MUONLoader->UnloadRecPoints(); | |
d6ea26eb | 143 | |
53958b19 | 144 | } // loop on events |
d6ea26eb | 145 | |
a653f08b | 146 | } |
d6ea26eb | 147 | |
53958b19 | 148 | |
149 |