diff --git a/create_analysis_tree.py b/create_analysis_tree.py
new file mode 100644
index 0000000000000000000000000000000000000000..0a1e09cbfa1e8b46a10947f085d84753864fc81e
--- /dev/null
+++ b/create_analysis_tree.py
@@ -0,0 +1,95 @@
+"""Create the directory structure for an analysis.
+    Change the default value for the Parent folder in the argparse
+    
+        Parent_Folder
+        └──DL1
+            ├── source
+            │   └── night
+            │      └── version
+            │           └── cleaning
+            DL2
+            ├── source
+            │   └── night
+            │      └── version
+            │           └── cleaning
+            DL3
+            └── source
+                └── night
+                   └── version
+                        └── cleaning
+"""
+
+import os
+import argparse
+from argparse import RawTextHelpFormatter
+
+
+def makedir(name):
+    """
+    Create folder if non-existent and output OS error if any.
+
+    Parameters
+    ----------
+    name : str
+        Name of the analysis.
+    """
+
+    # Create target Directory if don't exist
+    if not os.path.exists(name):
+        os.makedirs(name)
+        print("Directory ", name, " Created ")
+    else:
+        print("Directory ", name, " already exists")
+    return None
+
+
+def main():
+    # define command-line arguments
+    description = 'Create a directory structure'
+
+    parser = argparse.ArgumentParser(
+        description=description,
+        formatter_class=RawTextHelpFormatter
+    )
+
+    parser.add_argument(
+        '--main_dir', type=str, required=False, dest='main_dir',
+        default='/fefs/aswg/workspace/alice.donini/Analysis/data',
+        help='Path to parent folder'
+    )
+
+    parser.add_argument(
+        '--source', type=str, required=True, dest='source',
+        help='Source name'
+    )
+
+    parser.add_argument(
+        '--night', type=str, required=True, dest='night',
+        help='Night date'
+    )
+
+    parser.add_argument(
+        '--version', type=str, required=False, dest='version',
+        default='v0.9.2', help='lstchain version'
+    )
+
+    parser.add_argument(
+        '--cleaning', type=str, required=False, dest='cleaning',
+        default='tailcut84', help='Cleaning type'
+    )
+
+    args = parser.parse_args()
+    
+    # Define analysis directories and subdirectories
+    data_dir = ['DL1', 'DL2', 'DL3']
+    structure = f'{args.source}/{args.night}/{args.version}/{args.cleaning}'
+
+    for folder in data_dir:
+        dirName = os.path.join(f'{args.main_dir}', str(folder), structure)
+        makedir(dirName)
+
+    print(f'Directory structure ready for analysis on {args.source}.')
+
+
+if __name__ == "__main__":
+    main()