1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 #if !defined(__CINT__) || defined(__MAKECINT__)
20 #include "AliRunLoader.h"
21 #include "AliLoader.h"
23 #include "AliMUONData.h"
24 #include "AliMUONTriggerDecision.h"
29 //get trigger decision and write it in TreeR of MUON.RecPoints.root
31 void MUONtrigger (char* filename="galice.root",
32 Int_t evNumber1=0, Int_t evNumber2=9999)
34 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
35 // Creating Run Loader and openning file containing Hits
36 AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONLoader","UPDATE");
37 if (RunLoader ==0x0) {
38 printf(">>> Error : Error Opening %s file \n",filename);
42 // Loading AliRun master
43 if (RunLoader->GetAliRun() == 0x0) RunLoader->LoadgAlice();
45 // Loading MUON subsystem
46 AliLoader * MUONLoader = RunLoader->GetLoader("MUONLoader");
48 Int_t ievent, nevents;
49 nevents = RunLoader->GetNumberOfEvents();
51 AliMUONTriggerDecision* TrigDec = new AliMUONTriggerDecision(MUONLoader);
52 AliMUONData* muondata = TrigDec->GetMUONData();
54 MUONLoader->LoadDigits("READ");
55 MUONLoader->LoadRecPoints("UPDATE");
57 // Testing if trigger has already been done
58 RunLoader->GetEvent(0);
59 if (MUONLoader->TreeR()) {
60 if (muondata->IsTriggerBranchesInTree()) {
61 MUONLoader->UnloadRecPoints();
62 MUONLoader->LoadRecPoints("RECREATE");
63 printf("Recreating RecPoints files\n");
67 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
68 if (evNumber2>nevents) evNumber2=nevents;
69 for (ievent = evNumber1; ievent < evNumber2; ievent++) { // event loop
71 printf("event %d\n",ievent);
72 RunLoader->GetEvent(ievent);
73 // Test if rawcluster has already been done before
74 if (MUONLoader->TreeR() == 0x0)
75 MUONLoader->MakeRecPointsContainer();
77 if (muondata->IsTriggerBranchesInTree()){
78 // Test if rawcluster has already been done before
79 if (ievent == evNumber1) MUONLoader->UnloadRecPoints();
80 MUONLoader->MakeRecPointsContainer(); // Redoing clusterisation
81 Info("RecPointsContainer",
82 "Recreating RecPointsContainer and deleting previous ones");
85 muondata->MakeBranch("GLT");
86 muondata->SetTreeAddress("D,GLT");
88 TrigDec->Digits2Trigger();
90 muondata->Fill("GLT"); //Filling Global Local Trigger
91 MUONLoader->WriteRecPoints("OVERWRITE");
92 muondata->ResetDigits();
93 muondata->ResetTrigger();
97 MUONLoader->UnloadDigits();
98 MUONLoader->UnloadRecPoints();