/[PAMELA software]/PamCut/doc/PamCutDevGuide.tex
ViewVC logotype

Diff of /PamCut/doc/PamCutDevGuide.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by pam-fi, Fri Jun 5 13:33:18 2009 UTC revision 1.3 by pam-fi, Mon Jun 15 14:44:01 2009 UTC
# Line 534  should be straightforward. However, look Line 534  should be straightforward. However, look
534  implementations of actions if you need some example to setup your build.  implementations of actions if you need some example to setup your build.
535    
536  \section{How to build and use the library}  \section{How to build and use the library}
537    \subsection{Standard Pamela environment}
538  If the makefiles are correctly set up, the only remaining thing is to type  If the makefiles are correctly set up, the only remaining thing is to type
539  \verb1make all1. Remember to set the PAMELA environment with the set\_pam\_env  \verb1make all1. Remember to set the PAMELA environment with the set\_pam\_env
540  script BEFORE invoking \verb1make1. This will generate a {\it libPamCut.so} file  script BEFORE invoking \verb1make1. This will generate a {\it libPamCut.so} file
541  which will contain all the cuts. To clean the project and build from scratch  which will contain all the cuts. To clean the project and build from scratch
542  type \verb1make clean all1. To use the library in an analysis code the  type \verb1make clean all1. The software can then be installed in the usual
543    Pamela environment calling \verb1make install1: this will place  all the
544    headers in the folder \verb1$PAM_INC/PamCut1 and the {\it libPamCut.so} file in
545    \verb1$PAM_LIB1. To eliminate the installed files call \verb1make distclean1;
546    note that this will NOT do the work of \verb1make clean1, eg., clean the
547    project, but simply remove the files copied in the Pamela directories. Remember
548    to type \verb1make install1 each time you modify and recompile the software, to
549    upgrade the installed version to the new one.
550    
551    To use the library in an analysis code the
552  environment header must be included in the code:  environment header must be included in the code:
553  \verb1#include "<root PamCutdirectory>/PamCutEnv.h"1. With this, all the  \verb1#include "<root PamCutdirectory>/PamCutEnv.h"1. With this, all the
554  classes and common definitions will be accessible. A typical usage of {\bf  classes and common definitions will be accessible. A typical usage of {\bf
555  PamCut} inside the analysis code would look like:  PamCut} inside the analysis code would look like:
556    
557  \begin{verbatim}  \begin{verbatim}
558          
559      #include <PamCut/PamCutEnv.h>
560      
561      int main(){
562        .
563        .
564        .
565      
566    PamCutCollection collection;    PamCutCollection collection;
567    
568    DummyCut1 dummy1;    DummyCut1 dummy1;
# Line 555  PamCut} inside the analysis code would l Line 572  PamCut} inside the analysis code would l
572    
573    collection.Process(event, 0, event->GetEntries()-1);    collection.Process(event, 0, event->GetEntries()-1);
574            
575         .
576         .
577         .
578      }  
579        
580  \end{verbatim}  \end{verbatim}
581    
582  In the simple example above a \verb1DummyCut11 and a \verb1DummyCut21 object  In the simple example above a \verb1DummyCut11 and a \verb1DummyCut21 object
583  (which requires some sort of parameter) are instantiated. They are added to  (which requires some sort of parameter) are instantiated. They are added to
584  \verb1collection1 which takes care of applying them to all the events.  \verb1collection1 which takes care of applying them to all the events.
585    
586  When the analysis code is compiled the linker must be aware that it  \subsection{Custom environment}
587  needs a library called {\it libPamCut.so} and where to find it. In the {\it  If you don't have access to the Pamela software directories (eg., you don't
588  makefile} which builds the analysis program the following option must be added  have write permission on them) you cannot install the software; but you can
589  to the linker invocation:  still use PamCut directly from the source folder.
590    
591    First of all, you have to tell the compiler where to find the {\bf PamCut}'s
592    headers. They are in the main {\bf PamCut} directory, so you may add this
593    option:
594  \newline  \newline
595  \verb1-L<root PamCut directory> -lPamCut1.  \verb1       -I<directory>1
596    \newline
597  One could also wish to move {\it libPamCut.so} to another directory: this path  to the compiler invocation in the {\it makefile} of your main analysis program.
598  must then replace what is indicated as \verb1<root PamCut directory>1 above.  This tells the compiler to search for headers in the folder specified after
599    \verb1-I1. So, if {\it <directory>} is the folder which contains the {\bf
600    PamCut}'s main folder, you don't have to change anything in your main analysis
601    file (with respect to what described in the previous subsection), since:
602    \newline
603    \verb1       #include <PamCut/PamCutEnv.h>1
604    \newline
605    includes the file {\it PamCutEnv.h} which is in the folder {\it PamCut} in the
606    standard inclusion directories, one of which is the one specified with the
607    \verb1-I1 compiler directive. Obviously, one can play with directories, having
608    care to indicate the right paths to the compiler
609    
610  Finally, when the analysis code is compiled and linked against libPamCut.so, to  The following option must be added to the linker invocation:
611    \newline
612    \verb1       -L<root PamCut directory> -lPamCut1.
613    \newline
614    to tell the linker where the dynamic library is.
615    
616    Then, when the analysis code is compiled and linked against libPamCut.so, to
617  launch it it's necessary to tell the environment where the library is, so that  launch it it's necessary to tell the environment where the library is, so that
618  the program can dynamically access it at runtime. This information is encoded  the program can dynamically access it at runtime. This information is encoded
619  in the environment variable LD\_LIBRARY\_PATH, which contains the paths of the  in the environment variable LD\_LIBRARY\_PATH, which contains the paths of the

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.23